美文网首页
剑指 Offer 第57-2题:和为s的连续正数序列

剑指 Offer 第57-2题:和为s的连续正数序列

作者: 放开那个BUG | 来源:发表于2022-08-09 14:59 被阅读0次

    1、前言

    题目描述

    2、思路

    本题使用滑动窗口来着,如果满足窗口里的值则停止并记录,否则则滑动。

    3、代码

    class Solution {
        public int[][] findContinuousSequence(int target) {
            int left = 1, right = 1, sum = 0;
            List<int[]> res = new ArrayList<>();
    
            // 至少有两个数,左窗口超过一般就不可能有和为 target 的数,提前结束(也可以不加)
            while(left <= target / 2){
                if(sum < target){
                    sum += right;
                    right++;
                }else if(sum > target){
                    sum -= left;
                    left++;
                }else {
                    int[] arr = new int[right - left];
                    for(int i = left; i < right; i++){
                        arr[i - left] = i;
                    }
                    res.add(arr);
    
                    // 左边界向右边移动
                    sum -= left;
                    left++;
                }
            }
    
            return res.toArray(new int[res.size()][]);
        }
    }
    

    相关文章

      网友评论

          本文标题:剑指 Offer 第57-2题:和为s的连续正数序列

          本文链接:https://www.haomeiwen.com/subject/txobbrtx.html