您的位置:首页 > 其它

BinarySearch-----209. Minimum Size Subarray Sum

2017-07-29 14:50 507 查看
原题目

参考资料

一看到这种目标和就想到了递归回溯的dfs,递归回溯的过程中并不能解决到连续子数组的情况,同样的问题是一看到连续子数组就想到了动态规划,但是动态规划问题都是求得最小/最大连续字数组之等等。这里使用双指针,相当于是一块游标的情况。

public int minSubArrayLen(int s,int []nums){
if(nums.length==0||nums==null){
return 0;
}
int min=Integer.MAX_VALUE;
int left=0;
int right=0;
int sum=0;
while(right<nums.length){
//滚动加和
sum+=nums[right++];
//一旦满足条件就要进行判断同时做出相应的处理
while(sum>=s){
//注意的是题目是求length,因此right++的值减去left才满足条件
min=Math.min(min,right-left);
sum-=nums[left++];//减去左边的值,同时左边进一位以便进行下一步的判断
}

}
//很有可能什么都没发生
return min==Integer.VALUE?0:min;
}


这种遍历的情况还是比较好的只需要进行一次遍历就行了,思想很重要,最粗暴的就是多次遍历
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: