209. Minimum Size Subarray Sum
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.
Example:
Input: s = 7, nums = [2,3,1,2,4,3]
Output: 2
Explanation: the subarray [4,3] has the minimal length under the problem constraint.
Follow up:
If you have figured out the O(n) solution, try coding another solution of which the time complexity is O(n log n).
题目链接:https://leetcode.com/problems/minimum-size-subarray-sum/
解法:双指针-滑动窗口
class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
int len = nums.size();
if(len<=0) return 0;
int i=0, j=0, minl=INT_MAX, sum=nums[0];
while(true){
if(sum<s){
if(j>=len-1) break;
else{
sum+=nums[++j];
}
}else{
if(j-i+1<minl){
minl = j-i+1;
}
sum -= nums[i++];
}
}
return minl==INT_MAX?0:minl;
}
};
tip:minl设成nums.size()+1即可
本文解析了LeetCode上编号为209的问题“最小子数组长度”,该问题要求在给定正整数数组和目标和的情况下,找到满足条件的最小子数组长度。文章详细介绍了使用双指针滑动窗口算法的解决方案,时间复杂度为O(n),并附带了完整的C++代码实现。

被折叠的 条评论
为什么被折叠?



