Skip to content

Commit 6d6658c

Browse files
committed
feat: update leetcode solutions: No.1006. Clumsy Factorial
1 parent 050137f commit 6d6658c

File tree

4 files changed

+117
-15
lines changed

4 files changed

+117
-15
lines changed

Diff for: solution/1000-1099/1006.Clumsy Factorial/README.md

+41-2
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,61 @@
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
### **...**

Diff for: solution/1000-1099/1006.Clumsy Factorial/README_EN.md

+39-2
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,50 @@
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
### **...**
+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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+
}

Diff for: solution/1000-1099/1006.Clumsy Factorial/Solution.py

+13-11
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
class 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)

0 commit comments

Comments
 (0)