剑指 Offer 57 - II. 和为s的连续正数序列

发布时间 2023-05-29 10:15:09作者: ZDREAMER

题目描述:

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。

序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。

 

方法:滑动窗口(双指针)

 

class Solution{
    public int[][] findContinuousSequence(int target){
        int i=1,j=2,s=3;
        List<int[]> res = new ArrayList<>();
        while(i<j){
            if(s==target){
                int ans[] = new int[j-i+1];
                for(int k=i;k<=j;k++){
                    ans[k-i]=k;
                }
                res.add(ans);
            }
            if(s>=target){
                s-=i;
                i++;
            }else{
                j++;
                s+=j;
            }
        }
        return res.toArray(new int[0][]);
    }
}