File tree Expand file tree Collapse file tree 4 files changed +117
-15
lines changed
solution/1000-1099/1006.Clumsy Factorial Expand file tree Collapse file tree 4 files changed +117
-15
lines changed Original file line number Diff line number Diff line change 4444
4545<!-- 这里可写通用的实现逻辑 -->
4646
47+ 遇到 ` * ` 、` / ` 时计算后入栈,遇到 ` + ` 、` - ` 时直接入栈。最后累加栈中的元素即可。
48+
4749<!-- tabs:start -->
4850
4951### ** Python3**
5052
5153<!-- 这里可写当前语言的特殊实现逻辑 -->
5254
5355``` python
54-
56+ class Solution :
57+ def clumsy (self , N : int ) -> int :
58+ op = 0
59+ s = [N]
60+ for i in range (N - 1 , 0 , - 1 ):
61+ if op == 0 :
62+ s.append(s.pop() * i)
63+ elif op == 1 :
64+ s.append(int (s.pop() / i))
65+ elif op == 2 :
66+ s.append(i)
67+ else :
68+ s.append(- i)
69+ op = (op + 1 ) % 4
70+ return sum (s)
5571```
5672
5773### ** Java**
5874
5975<!-- 这里可写当前语言的特殊实现逻辑 -->
6076
6177``` java
62-
78+ class Solution {
79+ public int clumsy (int N ) {
80+ Deque<Integer > s = new ArrayDeque<> ();
81+ s. offerLast(N );
82+ int op = 0 ;
83+ for (int i = N - 1 ; i > 0 ; -- i) {
84+ if (op == 0 ) {
85+ s. offerLast(s. pollLast() * i);
86+ } else if (op == 1 ) {
87+ s. offerLast(s. pollLast() / i);
88+ } else if (op == 2 ) {
89+ s. offerLast(i);
90+ } else {
91+ s. offerLast(- i);
92+ }
93+ op = (op + 1 ) % 4 ;
94+ }
95+ int res = 0 ;
96+ while (! s. isEmpty()) {
97+ res += s. pollLast();
98+ }
99+ return res;
100+ }
101+ }
63102```
64103
65104### ** ...**
Original file line number Diff line number Diff line change 5656### ** Python3**
5757
5858``` python
59-
59+ class Solution :
60+ def clumsy (self , N : int ) -> int :
61+ op = 0
62+ s = [N]
63+ for i in range (N - 1 , 0 , - 1 ):
64+ if op == 0 :
65+ s.append(s.pop() * i)
66+ elif op == 1 :
67+ s.append(int (s.pop() / i))
68+ elif op == 2 :
69+ s.append(i)
70+ else :
71+ s.append(- i)
72+ op = (op + 1 ) % 4
73+ return sum (s)
6074```
6175
6276### ** Java**
6377
6478``` java
65-
79+ class Solution {
80+ public int clumsy (int N ) {
81+ Deque<Integer > s = new ArrayDeque<> ();
82+ s. offerLast(N );
83+ int op = 0 ;
84+ for (int i = N - 1 ; i > 0 ; -- i) {
85+ if (op == 0 ) {
86+ s. offerLast(s. pollLast() * i);
87+ } else if (op == 1 ) {
88+ s. offerLast(s. pollLast() / i);
89+ } else if (op == 2 ) {
90+ s. offerLast(i);
91+ } else {
92+ s. offerLast(- i);
93+ }
94+ op = (op + 1 ) % 4 ;
95+ }
96+ int res = 0 ;
97+ while (! s. isEmpty()) {
98+ res += s. pollLast();
99+ }
100+ return res;
101+ }
102+ }
66103```
67104
68105### ** ...**
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public int clumsy (int N ) {
3+ Deque <Integer > s = new ArrayDeque <>();
4+ s .offerLast (N );
5+ int op = 0 ;
6+ for (int i = N - 1 ; i > 0 ; --i ) {
7+ if (op == 0 ) {
8+ s .offerLast (s .pollLast () * i );
9+ } else if (op == 1 ) {
10+ s .offerLast (s .pollLast () / i );
11+ } else if (op == 2 ) {
12+ s .offerLast (i );
13+ } else {
14+ s .offerLast (-i );
15+ }
16+ op = (op + 1 ) % 4 ;
17+ }
18+ int res = 0 ;
19+ while (!s .isEmpty ()) {
20+ res += s .pollLast ();
21+ }
22+ return res ;
23+ }
24+ }
Original file line number Diff line number Diff line change 11class Solution :
2-
32 def clumsy (self , N : int ) -> int :
4- s = ''
5- calc = ['*' , '//' , '+' , '-' ]
6- i = 0
7- while N != 1 :
8- s = s + str (N ) + calc [i ]
9- i += 1
10- i %= 4
11- N -= 1
12- s += '1'
13- return eval (s )
3+ op = 0
4+ s = [N ]
5+ for i in range (N - 1 , 0 , - 1 ):
6+ if op == 0 :
7+ s .append (s .pop () * i )
8+ elif op == 1 :
9+ s .append (int (s .pop () / i ))
10+ elif op == 2 :
11+ s .append (i )
12+ else :
13+ s .append (- i )
14+ op = (op + 1 ) % 4
15+ return sum (s )
You can’t perform that action at this time.
0 commit comments