java 大于等于ķ的最短子数组长度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 大于等于ķ的最短子数组长度相关的知识,希望对你有一定的参考价值。

//O(n)的方法,其实有两种方法。一个是用两个指针从左往右扫描,left和right记录满足要求的连续子数组左边界和右边界,先移动right直到期间的和大于等于k,然后再把left往右移动来缩小子数组的长度,并且更新最短子数组长度。
//第二种借用HashMap,存储累加值和索引的对应关系。先将数组从左往右累加,然后再类似于“连续子数组之和大于k的最大长度”来实现
public int minSubArrMoreK(int[] nums,int k){
  if(nums==null || nums.length==0) return 0;
  int left=0,right=0,sum=0;
  int res = nums.length+1; ;
  while(right < nums.length){
    while(sum < k && right < nums.length) sum += nums[right++];
    while(sum >= k){
      res = Math.min(res,right-left);
      sum -= nums[left++];
    }
  }
  return res==nums.length+1?0:res;
}
//分治法,Divide and Conquer

以上是关于java 大于等于ķ的最短子数组长度的主要内容,如果未能解决你的问题,请参考以下文章

刷题日记和大于等于target的最短子数组

刷题日记和大于等于target的最短子数组

leetcode剑指 Offer II 008. 和大于等于 target 的最短子数组

leetcode剑指 Offer II 008. 和大于等于 target 的最短子数组

leetcode剑指 Offer II 008. 和大于等于 target 的最短子数组

《程序员代码面试指南》第八章 数组和矩阵问题 需要排序的最短子数组长度