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

和为S的连续正数序列

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

基本思路:滑动窗口,维护左端点l与右端点r,由于至少有两个数,所以循环终止条件为l < r。

通过左端点与右端点可以算出区间和,如果大于目标则右移左端点,小于则右移右端点,等于则将滑动窗口内的数存储在结果中。

由于每次只滑动一个数,且要求的是区间和,所以区间和可以在滑动窗口滑动时计算,避免了乘法运算。

class Solution {
public:
    vector<vector<int>> FindContinuousSequence(int sum) {
        vector<vector<int>> res;
        int l = 1, r = 2, nows = 3;
        while (l < r) {
            if (nows == sum) {
                vector<int> tmp;
                for (int i = l; i <= r; i++) {
                    tmp.push_back(i);
                }
                res.push_back(tmp);
                nows -= l++;
            }
            else if (nows > sum) {
                nows -= l++;
            }
            else {
                nows += ++r;
            }
        }
        return res;
    }
};

全部评论

相关推荐

05-23 19:33
重庆大学 Java
只学了传统后端,马上去后端实习了,在想要不要学习agent开发相关的。27秋招和26相比难度如何?
我连备胎都不是却还在...:就暑期实习而言,大厂官宣hc 比 26 多,但是我观察看应该低于 26 的,估计秋招也不简单
点赞 评论 收藏
分享
不知道怎么取名字_:这种,我遇到过一次,筛选简历的人没注意,面试官拿到简历后一看,就觉得不用面试了
点赞 评论 收藏
分享
04-13 11:19
门头沟学院 HTML5
NullPointe...:27实习的都快结束了吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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