逆波兰表达式的思路,用栈来计算。
class Solution {
public:
int clumsy(int N) {
stack<int> stk; //用栈来计算
stk.push(N -- );
while (N) //按照乘除加减的顺序遍历直到N为0
{
if (N) stk.top() *= N -- ; //每一步都要判断当前N是否为0,且计算后N自减1
if (N) stk.top() /= N -- ; //乘法和除法直接用栈顶元素计算
if (N) stk.push(N -- ); //加法就push当前的N
if (N) stk.push( - N -- ); //减法就push当前的-N
}
int res = 0;
while (stk.size()) //累加栈中元素可得结果
{
res += stk.top();
stk.pop();
}
return res;
}
};
orz
newbee