输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)
题目
解题思路
代码
class Solution {
public int[][] findContinuousSequence(int target) {
//创建一个list存数组
List<int[]> list = new ArrayList<>();
//当l>=r跳出循环
for (int l = 1, r = 2;l < r;) {
//利用数学公式计算两数区间内的和
int sum = (l + r)*(r - l + 1) / 2;
//如果条件成立就讲l-r区间的数作为数组 存入list
if (sum == target) {
int[] nums = new int[r - l + 1];
for (int i = l;i <= r ;i++) {
nums[i - l] = i;
}
list.add(nums);
//不可能出现起点相同的结果
l++;
} else if (sum < target) {
r++;
} else {
l++;
}
}
return list.toArray(new int[list.size()][]);
}
}