做网站的用处,网络运营托管公司,中国风html5网站模板免费下载,泰安人才网档案查询给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的
子数组 [numsl, numsl1, ..., numsr-1, numsr] #xff0c;并返回其长度。如果不存在符合条件的子数组#xff0c;返回 0 。 class Solution {public int minSu…给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的
子数组 [numsl, numsl1, ..., numsr-1, numsr] 并返回其长度。如果不存在符合条件的子数组返回 0 。 class Solution {public int minSubArrayLen(int target, int[] nums) {int left0;int sum0;int resultInteger.MAX_VALUE;for( int right0;rightnums.length;right){sumnums[right];while(sumtarget){resultMath.min(result,right-left1);sum-nums[left];}}return result Integer.MAX_VALUE ? 0:result;}
} java的代码如上我的理解就是弄个右指针和左指针和一个result弄最大然后用右指针遍历数组当sum求和达到target时就把right-left1得到的长度返回跟result比小的的留下如果sum一直大于target那么就增加left缩短长度看能不能大于等于target如果不行则退出while循环继续累加right指针以此类推最后得到最短长度的。谢谢观看