输入一个正整数 target
,输出所有和为 target
的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例 1:
输入:target = 9 输出:[[2,3,4],[4,5]]
示例 2:
输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]]
限制:
1 <= target <= 10^5
Related Topics
- 数学
- 双指针
- 枚举
著书三年倦写字,如今翻书不识志,若知倦书悔前程 ,无如渔樵未识时
输入一个正整数 target
,输出所有和为 target
的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例 1:
输入:target = 9 输出:[[2,3,4],[4,5]]
示例 2:
输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]]
限制:
1 <= target <= 10^5
双指针
class Solution {
public int[][] findContinuousSequence(int target) {
int l = 1;
int r = 2;
List<int[]> res = new ArrayList<>();
while (l<r){
int sum = (l + r) * (r - l + 1) / 2;
if (sum == target){
int[] arr = new int[r - l + 1];
int tmp = l-1;
while (++tmp <=r){
arr[tmp - l] = tmp;
}
res.add(arr);
l++;
continue;
}
if (sum < target){
r++;
}else{
l++;
}
}
return res.toArray(new int[res.size()][]);
}
}
发表评论