题解 | #和为S的连续正数序列#
和为S的连续正数序列
http://www.nowcoder.com/practice/c451a3fd84b64cb19485dad758a55ebe
- 滑动窗口,注意滑动窗口是一种思想,并不是有固定得数据结构去支撑他。
- 一般是j,i满足一定得条件采取移动,而不是无条件移动。
- 注意移动的时候的细节,自己一定要用验槽本仔细画出来。
class Solution { public: vector<vector<int> > FindContinuousSequence(int sum) { if(!sum) return {}; vector<vector<int> > res; vector<int> path; //滑动窗口这个思想做。 int i = 1, j = 2; int tmp = 1; for(;j<=sum;){ if(tmp<sum){ tmp+=j; j++;//细节 } if(tmp>sum){ tmp-=i;//细节 i++; } if(tmp==sum&&i!=sum){//不能有自身得数字存在(至少两个) for(int k = i; k<=j-1;k++){//细节 path.push_back(k); } res.push_back(path); path.clear(); tmp -=i; i++; } } return res; } };
剑指Offer 文章被收录于专栏
剑指offer的解析结合