题解 | #和为S的连续正数序列#

和为S的连续正数序列

http://www.nowcoder.com/practice/c451a3fd84b64cb19485dad758a55ebe

  1. 滑动窗口,注意滑动窗口是一种思想,并不是有固定得数据结构去支撑他。
  2. 一般是j,i满足一定得条件采取移动,而不是无条件移动。
  3. 注意移动的时候的细节,自己一定要用验槽本仔细画出来。
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的解析结合

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务