标签:count Clumsy Factorial res top st -- int 1006
仅供自己学习
思路:
因为这个是有一定规律的使用运算符,那么就存在一定周期,所以我们就可以考虑一个数conut通过模这个周期来判断此时可以用哪个运算符。又因为这是滞后计算,那么就用栈。
我们从N这个数往0减小,我们可以知道从第一个数 相乘到加上最后一个数,总共有4个数,那周期就为4.首先对于相乘的数,如果N=10,那么将10放入栈,然后N--为9,令count=0,此时0%4=0,这就是用乘法的条件,将N与栈顶元素相乘,然后N--为8,count++为1,1%4=1,此时栈顶元素除以N,然后2%4=2,就将N加入栈中.3%4=3作为加入-N的条件。可以把10-1的所有数列出来,然后按照这规律,会得到正确的结果。
按照上面的规律,最后栈里存放的就是所有乘除后得到的结果,接下来只需要把栈的元素全部取出来求和即可。
代码:
class Solution {
public:
int clumsy(int N) {
stack<int> st;
st.push(N);
N--;
int count=0;
while(N>0){
if(count%4==0) st.top()*=N;
else if(count%4==1) st.top()/=N;
else if(count%4==2) st.push(N);
else st.push(-N);
N--;
count++;
}
int res=0;
while(!st.empty()){
res+=st.top();
st.pop();
}
return res;
}
};
标签:count,Clumsy,Factorial,res,top,st,--,int,1006 来源: https://www.cnblogs.com/Mrsdwang/p/14605792.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。