题目
思路
根据大一时候学数据结构的经验,一般表达式的计算可以使用栈来完成
出现乘法、除法的时候可以把栈顶元素取出,与当前的 N 进行乘法运算、除法运算(除法运算需要注意先后顺序),并将运算结果重新压入栈中;
出现加法、减法的时候,把减法视为加上一个数的相反数,然后压入栈,等待以后遇见「乘」「除」法的时候取出
代码
class Solution {
public int clumsy(int N) {
Deque<Integer> stack = new LinkedList<Integer>();
stack.push(N);
N--;
int index=0;
while (N>0){
if(index%4==0){
stack.push(stack.pop()*N);
}else if(index%4==1) {
stack.push(stack.pop()/N);
}else if(index%4==2) {
stack.push(N);
}else {
stack.push(-N);
}
index++;
N--;
}
int sum=stack.pop();
while (stack.size()>0){
sum+=stack.pop();
}
return sum;
}
}