跳至主要內容

LeetCode 209.长度最小的子数组

张威小于 1 分钟数据结构与算法数组双指针滑动窗口

LeetCode 209.长度最小的子数组open in new window

题目描述:给定正整数数组nums和正整数target,找和>=target长度最小的**连续子数组;**找到返回其长度,找不到返回0;

  • 滑动窗口:[left, right],一层for:对于每一个固定的右界,找符合条件的左界,更新最小长度
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int fast = 0;
        int slow = 0;
        int sum = 0;
        int result = nums.size() + 1;
        while(fast < nums.size()) {
            sum += nums[fast];
            while(sum >= target) {
                int temp = fast - slow + 1;
                result = min(temp, result);
                sum -= nums[slow];
                ++slow;
            }
            
            ++fast;
            
        }
        if(result == nums.size() + 1) {
            return 0;
        }
        return result;
    }
};