题意
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例 1:
输入:target = 9
输出:[[2,3,4],[4,5]]
问题分析
双指针
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31//C++ class Solution { public: vector<vector<int>> findContinuousSequence(int target){ vector<vector<int>> res; if(target < 3) return res; int small = 1; int big = 2; int mid = (1+target)/2; int sum = small + big; while(small < mid){ if(sum == target){ vector<int> tmp; for(int num = small; num <= big; num++){ tmp.push_back(num); } res.push_back(tmp); sum += ++big; } else if(sum < target){ sum += ++big; } else{ sum -= small++; } } return res; } };
最后
以上就是无情身影最近收集整理的关于剑指Offer系列57-2—和为s的连续正数序列题意问题分析的全部内容,更多相关剑指Offer系列57-2—和为s内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复