笨阶乘

表达式的计算一般可以借助数据结构「栈」完成。将暂时不能确定运算顺序的数据存入栈,确定优先级之后从栈中取出进行计算。

思路为:遇到乘除将栈顶元素取出与当前数运算,遇到加法将当前数入栈,遇到减法将当前数相反数入栈,最后将栈内元素累加就是最终答案。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution {
public:
int clumsy(int N) {
stack<int> stk;
stk.push(N);
N--;
int i = 0;
while (N > 0) {
if (i % 4 == 0) {
stk.top() *= N;
} else if (i % 4 == 1) {
stk.top() /= N;
} else if (i % 4 == 2) {
stk.push(N);
} else {
stk.push(-N);
}
i++;
N--;
}
int sum = 0;
while (stk.size()) {
sum += stk.top();
stk.pop();
}
return sum;
}
};