滑动窗口模板例题

滑动窗口例题

和为s的连续正数序列

题目

输入一个正整数 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) {
        List<int[]> res = new ArrayList<>();
        int sum = 0;
        for(int l = 1,r = 1;r < target;r++){//右边界自然后移
            sum+=r;
            while(sum > target){//左边界循环后移
                sum-=l;
                l++;
            }
            if(sum == target){
                int[] temp = new int[r - l + 1];
                for(int i = 0;i < temp.length;i++){
                    temp[i] = l+i;
                }
                res.add(temp);
            }
        }
        return res.toArray(new int[0][]);
    }
}
posted @ 2020-04-01 09:25  wunsiang  阅读(408)  评论(0编辑  收藏  举报