剑指offer040

剑指offer040:和为S的连续正数序列

题目描述

题目描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。
但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。
没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,
你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

解法一:大神做法

class Solution {
public:
    vector<vector<int> > FindContinuousSequence(int sum) {
        int l = 1, r = 1, sumx = 1;
        vector<vector<int> > ans;
        while (l <= r) {
            r++;
            sumx += r;
            while (sumx > sum) {
                sumx -= l;
                l++;
            }
            if (sumx == sum && l != r) {
                vector<int> tmp;
                for (int i = l; i <= r; i++)  tmp.push_back(i);
                ans.push_back(tmp);
            }
        }
        return ans;
    }
};

   转载规则


《剑指offer040》 赵小亮 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
无法登陆github官网的解决办法 无法登陆github官网的解决办法
无法登陆github官网的解决办法 问题描述最近小亮因为要调研论文,使用了正版VPN,但是突然发现登陆不上github官网了,这个问题困扰两三天了,期间也按照网上的一些教程操作了一番,但是没有效果,直到碰见了下面的解决方案,立马见效,真是
2020-06-17
下一篇 
剑指offer18 剑指offer18
剑指offer18:顺时针打印矩阵 题目描述题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如, 如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依
2020-05-13
  目录