栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetcode 剑指offer008

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode 剑指offer008

          看到最大最小,连续,这几个关键词,就要考虑使用滑动窗口了,开始条件是,start和end都在数组的0号位置,一开始先移动end位置,当碰到start到end之间元素的和大于target的时候,就移动start,举个例子 target是7,nums是2,3,1,2,4,3,start=0,end=0,一开始end先移动,一直到他们之间的和大于target的时候,也就是end在第四个数字的时候,sum=2+3+1+2=8,8>target,现在移动start,end不动,那么sum=3+1+2=6,6

直到 start位置的值是4,end位置的值是3,sum=4+3=7=target,那么这个例子就有解,如果start到了nums.length的位置,那么说明之前所有的子数组都不等于target。

        以下是一种解法:

   public static int minSubArrayLen(int target, int[] nums) {

        int end=0;
        int tmp=0;
        int ans=Integer.MAX_VALUE;

        for(int start=0;start=target){
            ans=Math.min(ans,start-end+1);
            tmp-=nums[end++];
        }
        }
        return ans>nums.length?0:ans;
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281127.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号