难度:中等。
标签:数学。
第一次我就老老实实得按顺序算法,结果错了才发现要用栈做。
也可以找规律或者数学推导,但对我这个笨人来说意义不大,还是用栈吧。
正确解法:
class Solution {
public:
int clumsy(int N) {
stack<int> stk;
stk.push(N);
N -= 1;
while(N > 0){
for(int i = 0; i < 4 && N > 0; i++){
if(i == 0){
int k = stk.top();
stk.pop();
stk.push(k * N);
}
else if(i == 1){
int k = stk.top();
stk.pop();
stk.push(k / N);
}
else if(i == 2){
int k = stk.top();
stk.pop();
stk.push(k + N);
}
else if(i == 3){
stk.push(-N);
}
N--;
}
}
int res = 0;
while(!stk.empty()){
res += stk.top();
stk.pop();
}
return res;
}
};
结果:
过了就行过了就行。