您的位置:首页 > Web前端

剑指offer(38)-和为S的连续正数序列

2016-06-18 18:48 495 查看

题目描述

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

代码

class Solution {
public:
int sumNumber(int small,int big){
int sum = 0;
for (int i = small; i <= big; i++) {
sum += i;
}
return sum;
}

vector<vector<int> > FindContinuousSequence(int sum) {

vector<vector<int> > result;
if (sum < 3) {
return result;
}
int small = 1;
int big = 2;
while (small < big) {
if (sumNumber(small, big) < sum) {
big++;
}else if (sumNumber(small, big) > sum){
small++;
}else{
// small 到 big中间的值相加为 sum
vector<int> item;
for (int i = small; i <= big; i++) {
item.push_back(i);
}
// 将找到的数组放到大的数组中
result.push_back(item);
// 继续寻找
big++;
}
}
return result;
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: