印度拒絕削減電動汽車進口關稅,特斯拉計劃遭受打擊
阿新 • • 發佈:2021-08-03
滑動視窗:
class Solution { public int minSubArrayLen(int target, int[] nums) { int i=0; int j=0; int sum=0; int min=Integer.MAX_VALUE; while(j<nums.length){ sum+=nums[j]; if(sum<target){ j++; }else{ min=Math.min(min,j-i+1); sum-=nums[i]; i++; sum-=nums[j]; } } return (min==Integer.MAX_VALUE)?0:min; } }
二分查詢:
class Solution { //2,5,6,8,12,15 public int minSubArrayLen(int target, int[] nums) { int min=Integer.MAX_VALUE; int[] number=new int[nums.length+1]; for(int i=1;i<number.length;i++){//字首和的題目加入一個0非常關鍵 number[i]=nums[i-1]; } for(int i=1;i<number.length;i++){ number[i]+=number[i-1]; //在0..i-1找字首和之差》=target(最後一個滿足這個的下標) int lo=0; int hi=i; while(lo<hi){ int mid=lo+(hi-lo)/2;//中間偏右 if(number[i]-number[mid]<target)//[hi,n)是不滿足條件的 hi=mid;//mid給右邊 else//mid給右邊,[0,lo)是滿足條件的 lo=mid+1; } if(lo-1>=0&&number[i]-number[lo-1]>=target) min=Math.min(min,i-lo+1); } if(min==Integer.MAX_VALUE)return 0; return min; } }