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

和为S的连续正数序列

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

滑动窗口

#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param sum int整型 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > FindContinuousSequence(int sum) {
        vector<vector<int>> res;
        int left = 1;
        int right = 2;
        deque<int> tmp;// 维护的窗口
        int current_sum = left + right;

        tmp.push_back(left);
        tmp.push_back(right);

        while (left < right) {
            if(current_sum < sum) 
            {
                right++;
                current_sum += right;
                tmp.push_back(right);
            }
            else if(current_sum > sum)
            {
                current_sum -= left;
                tmp.pop_front();
                left++;
            }
            else 
            {
                vector<int> tmp1(tmp.begin(), tmp.end());
                res.push_back(tmp1);
			  // 继续更新left来确保遍历到所有序列,同时避免永远在循环中
                current_sum -= left;
                tmp.pop_front();
                left++;
            }
        }
        return res;
    }
};

全部评论

相关推荐

rbjjj:太杂了吧,同学,项目似乎都没深度,都是api调度耶,分层架构思想没有体现出来了,前端没有前端优化前端工程化体现,后端微服务以及分层架构没体现以及数据安全也没体现,核心再改改,注重于计算机网络,工程化,底层原理吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务