要約-Leetcode-209。最小の長さのサブ配列

209.最小のサブアレイ

トピックリンク


出典:LeetCode
リンク:https://leetcode-cn.com/problems/minimum-size-subarray-sum/

タイトル説明

n個の正の整数と正の整数sを含む配列が与えられた場合、その合計≥sを満たす最小の長さの連続サブ配列を見つけて、その長さを返します。条件を満たすサブ配列がない場合は、0が返されます。

 

例:

入力:s = 7、nums = [2,3,1,2,4,3]
出力:2
説明:サブ配列[4,3]は、この条件下で長さが最小のサブ配列です。


トピック分析

 

ブルートフォースまたはスライディングウィンドウ

このコードはスライディングウィンドウを使用します

tmpは、現在の連続配列の合計の最大値を計算します

countは現在の修飾値です

resは最終結果を保存します。res= n +1の場合、条件が満たされていないものと見なされ、0が返されます。

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        //双指针法
        int n = nums.size();
        int i = 0, j = 0;
        int tmp = 0;
        int count = 0;
        int res = n + 1;//如果最后res 仍是n+1  没有符合条件的 返回0
        while(j<n){
            tmp += nums[j];
            j++;
            while(tmp >= target){
                res = min(res, j - i);
                tmp -= nums[i];
                i++;
            }
        }
        return res == n + 1 ? 0 : res;
    }
};

 

おすすめ

転載: blog.csdn.net/qq_42771487/article/details/113756825