难度简单
输入一个正整数 target
,输出所有和为 target
的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例 1:
输入:target = 9 输出:[[2,3,4],[4,5]]
示例 2:
输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]]
class Solution {//滑动窗口
public int[][] findContinuousSequence(int target) {
int l=1,r=2,s=3;
List<int[]> res = new ArrayList<>();
while(l<r){
if(s==target){
int[] ans = new int[r-l+1];
for(int k=l;k<=r;k++){
ans[k-l] = k;
}
res.add(ans);
}
if(s>=target){
s = s-l;
l++;
}
else{
r++;
s = s+r;
}
}
return res.toArray(new int[res.size()][]);
}
}