Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous 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.
解题思路:移动两个指针,指针之间的窗口保持比s大,通过移动两个指针寻找最小的size。
public class Solution { public int minSubArrayLen(int s, int[] nums) { int res = Integer.MAX_VALUE; int i = 0, j = 0, sum = 0; while (j < nums.length) { sum += nums[j++]; while (sum >= s) { res = Math.min(res, j-i); sum -= nums[i++]; } } return res == Integer.MAX_VALUE ? 0 : res; }}class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { int res = INT_MAX; int i = 0, j = 0, sum = 0; while (j < nums.size()) { sum += nums[j++]; while (sum >= s) { res = min(res, j-i); sum -= nums[i++]; } } return res == INT_MAX ? 0 : res; }};新闻热点
疑难解答