Recap-Leetcode-209. Sous-tableau avec la plus petite longueur

209. Le plus petit sous-tableau

Lien thématique


Source:
Lien LeetCode : https://leetcode-cn.com/problems/minimum-size-subarray-sum/

Description du titre

Étant donné un tableau contenant n entiers positifs et un entier positif s, trouver le sous-tableau continu avec la plus petite longueur satisfaisant sa somme ≥ s et renvoyer sa longueur. Si aucun sous-tableau ne répond aux critères, 0 est renvoyé.

 

Exemple:

Entrée: s = 7, nums = [2,3,1,2,4,3]
Sortie: 2
Explication: Le sous-tableau [4,3] est le sous-tableau avec la plus petite longueur dans cette condition


Analyse thématique

 

Force brute ou fenêtre coulissante

Ce code utilise une fenêtre coulissante

tmp calcule la valeur maximale de la somme du tableau continu actuel

count est la valeur qualifiée actuelle

res enregistre le résultat final. Si res = n +1, on considère que la condition n'est pas remplie et 0 est renvoyé.

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;
    }
};

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_42771487/article/details/113756825
conseillé
Classement