File tree 4 files changed +117
-15
lines changed
solution/1000-1099/1006.Clumsy Factorial
4 files changed +117
-15
lines changed Original file line number Diff line number Diff line change 44
44
45
45
<!-- 这里可写通用的实现逻辑 -->
46
46
47
+ 遇到 ` * ` 、` / ` 时计算后入栈,遇到 ` + ` 、` - ` 时直接入栈。最后累加栈中的元素即可。
48
+
47
49
<!-- tabs:start -->
48
50
49
51
### ** Python3**
50
52
51
53
<!-- 这里可写当前语言的特殊实现逻辑 -->
52
54
53
55
``` 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)
55
71
```
56
72
57
73
### ** Java**
58
74
59
75
<!-- 这里可写当前语言的特殊实现逻辑 -->
60
76
61
77
``` 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
+ }
63
102
```
64
103
65
104
### ** ...**
Original file line number Diff line number Diff line change 56
56
### ** Python3**
57
57
58
58
``` 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)
60
74
```
61
75
62
76
### ** Java**
63
77
64
78
``` 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
+ }
66
103
```
67
104
68
105
### ** ...**
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 1
1
class Solution :
2
-
3
2
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