[LeetCode]Minimum Size Subarray Sum
2016-12-15 17:04
239 查看
Question
Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn’t one, return 0 instead.For example, given the array
[2,3,1,2,4,3]and
s = 7,
the subarray
[4,3]has the minimal length under the problem constraint.
More practice:
If you have figured out the O(n) solution, try coding another solution of which the time complexity is O(n log n).
本题难度Medium。有 种算法分别是:
题意
找出最小子串(不是子顺串subsequence),其和大于等于s双指针法
复杂度
时间 O(N) 空间 O(1)思路
利用左右两个指针,令sum为左右指针范围内的求和。
如果
sum<s,右指针继续向右移动;
如果
sum>=s,左指针向右移动,直到
sum<s。用贪心法对最小长度值进行更新
附
ans的初始值设为
nums.length+1是very graceful(better than
-1)
代码
public class Solution { public int minSubArrayLen(int s, int[] nums) { //require int sum=0,ans=nums.length+1; //invariant for(int i=0,j=0;i<nums.length;i++){ sum+=nums[i]; while(sum>=s&&j<=i){ ans=Math.min(ans,i-j+1); //move the left point sum-=nums[j]; j++; } } //ensure return ans==(nums.length+1)?0:ans; } }
相关文章推荐
- 【leetcode】Minimum Size Subarray Sum
- [Leetcode 209, Medium] Minimum Size Subarray Sum
- leetcode 209 : Minimum Size Subarray Sum
- leetcode-209 Minimum Size Subarray Sum
- leetcode_Minimum Size Subarray Sum
- LeetCode Minimum Size Subarray Sum
- 《leetCode》:Minimum Size Subarray Sum
- LeetCode 209 - Minimum Size Subarray Sum
- leetcode 日经贴,Cpp code -Minimum Size Subarray Sum
- Leetcode 209 Minimum Size Subarray Sum
- Leetcode之Minimum Size Subarray Sum
- LeetCode 209 - Minimum Size Subarray Sum
- [leetcode]Minimum Size Subarray Sum
- [leetCode] Minimum Size Subarray Sum
- LeetCode Minimum Size Subarray Sum
- <LeetCode OJ>Minimum Size Subarray Sum【209】
- (leetcode)Minimum Size Subarray Sum
- [LeetCode]Minimum Size Subarray Sum
- Minimum Size Subarray Sum -- leetcode
- LeetCode—Minimum Size Subarray Sum