剑指offer 和大于等于target的最短子数组

力扣题目
解题思路:
双指针(有点滑动窗口的思想)
1.初始话最短数组的长度 min = Integer.MAX_VALUE
2.初始化一个数组的和 sum = 0;
3.定义变量(窗口的前后指针)i=0 j=0 j为快指针
4.开始遍历,当sum的值大于等于target时更新min
5.缩小窗口范围,加入后边的数组元素。


class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        //设置最小初始值
        int min = Integer.MAX_VALUE;
        //初始化数组和
        int sum = 0;
        //定义两个变量i,j
        for(int i=0,j=0;j<nums.length;j++){
            //扩大窗口
            sum += nums[j];
            while(i<=j && sum>=target){
                //更新最小值
                min = Math.min(min,j-i+1);
                //缩小窗口
                sum-= nums[i++];
            }
        }
        //若所有数组和都小于target,则返回0,否则返回更新值
        return min == Integer.MAX_VALUE?0:min;
    }
}

posted @   蹇爱黄  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示