42. Un sous-tableau continue et les questions de visage maximum

Entrez un tableau entier, le tableau a un effet positif, mais aussi négatif. Un réseau ou un entier plus continu composé d'un sous-réseau. A la recherche du maximum de tous les sous-réseaux et.

la complexité du temps requis est O (n).

 

Exemple 1:

Entrée: nums = [-2,1, -3,4, -1,2,1, -5,4]
Rendement: 6
Explication: sous - réseau continu [4, -1,2,1], et le plus, 6.

 

Conseils:

. 1 <= arr.length <= 10. 5 ^
-100 <= ARR [I] <= 100
Remarque: Les mêmes problèmes de titres actuels 53 et la station maître: https: //leetcode-cn.com/problems/maximum-subarray/

idées de résolution de problèmes (programmation dynamique):

max: valeur maximale et la sous-matrice, la valeur initiale du premier élément, somme: le sous-ensemble actuel et la valeur initiale du premier élément.

Grâce à la matrice, la valeur courante de la somme est déterminée, et si elle est inférieure à 0, l'élément courant depuis le début accumulé, et met à jour les valeurs de max

Code mise en œuvre:

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int len=nums.size();
        int max=nums[0];
        int sum=max;
        for(int i=1;i<len;++i){
            if(sum<0){
                sum=0;
            }
            sum+=nums[i];
            if(max<sum){
                max=sum;
            }
        }
        return max;
    }
};

 

Publié 253 articles originaux · louange gagné 15 · vues 30000 +

Je suppose que tu aimes

Origine blog.csdn.net/junjunjiao0911/article/details/104748692
conseillé
Classement