209. Minimum Size Subarray Sum**
2017-01-09 21:36
309 查看
Given an array of n positive integers and a positive integer s, find the minimal length of a contiguoussubarray of which the sum ≥ s.
If there isn't one, return 0 instead.
For example, given the array
the subarray
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).
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).
public int minSubArrayLen(int s, int[] nums) { int i=0, j=0, sum=0, min =Integer.MAX_VALUE; while(j<nums.length){ while(sum<s&&j<nums.length) sum+=nums[j++]; if(sum>=s){ while(sum>=s&&i<j) sum -= nums[i++]; min = Math.min(min, j-i+1); } } return min==Integer.MAX_VALUE?0:min; }总结:O(N^2)
public class Solution { public int minSubArrayLen(int s, int[] nums) { int[] sums = new int[nums.length+1]; for(int i=1; i<sums.length; i++) sums[i] = sums[i-1] + nums[i-1]; int minLen = Integer.MAX_VALUE; for(int i=0; i<sums.length; i++){ int end = binarySearch(i+1, sums.length -1, sums[i]+s, sums); if(end ==sums.length) break; if(end-i<minLen) minLen = end-i; } return minLen ==Integer.MAX_VALUE?0:minLen; } private int binarySearch(int low, int high, int key, int[] sums){ while(low<=high){ int mid = low +(high-low)/2; if(sums[mid] >=key){ high = mid -1; } else{ low = mid +1; } } return low; } }总结:O(nlogn)
相关文章推荐
- 209. Minimum Size Subarray Sum
- 【Medium】209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 【Leet Code】209. Minimum Size Subarray Sum---Medium
- (待进一步研究吃透)209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- [Leetcode]209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- [leetcode]209. Minimum Size Subarray Sum -- JavaScript 代码
- leetcode 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum解题报告
- leetcode 209. Minimum Size Subarray Sum 3. Longest Substring Without Repeating Characters
- leetcode 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum LeetCode
- LeetCode 209. Minimum Size Subarray Sum 滑动窗口
- LeetCode OJ 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum