zoukankan      html  css  js  c++  java
  • acwing 76. 和为S的连续正数序列

    地址 https://www.acwing.com/problem/content/description/72/

    输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。

    例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。

    样例

    输入:15
    
    输出:[[1,2,3,4,5],[4,5,6],[7,8]]
    

      

    双指针指向一个连续空间 如果和小了 则向右扩展 如果和大了 则弹出左边的值

    class Solution {
    public:
        
        
    vector<vector<int> > vv;
    
    vector<vector<int> > findContinuousSequence(int sum) {
        int l = 0; int r = 0;
        vector<int> nums;
        for (int i = 1; i <= sum / 2 + 1; i++) {
            nums.push_back(i);
        }
    
        int tmpSum = nums[l];
    
        while (l < nums.size() && r < nums.size() && l <= r) {
            if (tmpSum > sum) { tmpSum -= nums[l]; l++; continue; }
            else if (tmpSum < sum) {
                tmpSum += nums[r+1]; r++; continue;
            }
            else if (tmpSum == sum) {
                vector<int> v;
                for (int i = l; i <= r; i++) {
                    v.push_back(nums[i]);
                }
                vv.push_back(v);
                if (r < nums.size() - 1)
                    tmpSum += nums[r + 1]; 
                r++; continue;
            }
        }
    
        return vv;
    }
    
    
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    协程与IO模型
    进程池与线程池
    GIL全局解释器锁
    线程编程
    进程编程
    基于UDP协议的socket
    异常处理
    jquery mobile外部js无法载入问题
    禁用或限制部分WebKit特性
    eval 返回变量值
  • 原文地址:https://www.cnblogs.com/itdef/p/11460354.html
Copyright © 2011-2022 走看看