长度最小的子数组 ---- 滑动窗口

题目链接

题目:

分析:

  • 解法一:暴力解法, 找到所有连续子数组, 保留满足条件的
  • 解法二: 利用滑动窗口 找子数组 
    •  因为数组中都是正整数, 通过进窗口的操作, 我们找到一组, 如示例一中的2,3,1,2, 判断满足和>7, 那么根据单调性, 我们就不再需要判断加上后面两个数的两个子数组, 因为加上一定比7大, 并且不满足最小
    • 那么由第一个2发起的窗口就找到了最小子数组, 更新数据记录一下子数组的长度,下面我们找从下一个3开始的最小子数组,要计算3+1+2... 但是因为上一轮, 我们已经算过了2+3+1+2, 那么我们就可以直接让2出窗口, 得到一个值, 就不用重复计算了
    • 判断如果这个值<7, 说明还需要进窗口,让和变大 然后重复上述操作
    • 判断如果这个值>7, 说明还需要出窗口, 让和变小, 再进行判断

 代码:

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int sum = 0;
        int len = Integer.MAX_VALUE;
        for(int left = 0,right = 0;right < nums.length;right++){
            //进窗口
            sum += nums[right];
            //循环判断
            while(sum >= target){
                //更新结果
                len = Math.min(len,right-left+1);
                //出窗口
                sum -= nums[left++];
            }
        }
        return len == Integer.MAX_VALUE ? 0 : len;

    }
}

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 01:04:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 01:04:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 01:04:02       87 阅读
  4. Python语言-面向对象

    2024-04-28 01:04:02       96 阅读

热门阅读

  1. c++后台开发八股文遗漏复习点

    2024-04-28 01:04:02       30 阅读
  2. 薪酬构成要素:合理配置,满足员工需求

    2024-04-28 01:04:02       34 阅读
  3. 5. HTTPS的特点

    2024-04-28 01:04:02       36 阅读
  4. LeetCode热题Hot100 - 最长有效括号

    2024-04-28 01:04:02       32 阅读
  5. 力扣经典150题第四十题:同构字符串

    2024-04-28 01:04:02       33 阅读
  6. 使用Spring和MyBatis构建流浪猫狗救助网站

    2024-04-28 01:04:02       38 阅读
  7. 力扣1518. 换水问题

    2024-04-28 01:04:02       36 阅读
  8. 【leetcode】对撞指针题目总结

    2024-04-28 01:04:02       33 阅读
  9. OpenCV如何使用分水岭算法进行图像分割

    2024-04-28 01:04:02       36 阅读
  10. 【贪心算法】Leetcode 55. 跳跃游戏【中等】

    2024-04-28 01:04:02       33 阅读
  11. 【运维】Gitlab备份

    2024-04-28 01:04:02       35 阅读