LeetCode—剑指Offer:和为s的连续正数序列(滑动窗口)

和为s的连续正数序列(简单)

2020年9月10日

题目来源:力扣

在这里插入图片描述
解题

class Solution {
    
    
    public int[][] findContinuousSequence(int target) {
    
    
        List<int[]> res=new ArrayList<>();
        int l=1,r=1,sum=0;
        while(l<=target/2){
    
    
            //如果窗口和小于目标和,窗口右边界往右移动
            if(sum<target){
    
    
                sum+=r;
                r++;
            }
            //如果窗口和大于目标和,窗口左边界往左移动
            else if(sum>target){
    
    
                sum-=l;
                l++;
            }
            //如果窗口和与目标和相等
            else{
    
    
                int[] tmp_res=new int[r-l];
                for(int i=l;i<r;i++){
    
    
                    tmp_res[i-l]=i;
                }
                res.add(tmp_res);
                sum-=l;
                l++;
            }
        }
        return res.toArray(new int[0][]);
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41541562/article/details/108509880
今日推荐