输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
class Solution {
public int[][] findContinuousSequence(int target) {
int l = 1;
int r = 1;
int sum = 0;
List<int[]> res = new ArrayList<>();
while(l <= target / 2){
if(sum < target){
sum += r;
r++;
}else if(sum > target){
sum -= l;
l++;
}else{
int[] temp = new int[r-l];
for(int k = 0;k < r-l;k++){
temp[k] = l + k;
}
res.add(temp);
sum -= l;
l++;
}
}
return res.toArray(new int[res.size()][]);
}
}
执行用时:2 ms, 在所有 Java 提交中击败了94.72%的用户
内存消耗:39.5 MB, 在所有 Java 提交中击败了41.27%的用户
通过测试用例:32 / 32