Petite application d'algorithme gourmand

Après avoir lu la question, j'ai réfléchi à la façon de trouver le nombre minimum d'opérations pour chaque changement. Le tableau n'est pas ordonné au début, donc il n'y a aucun moyen de comprendre clairement le nombre d'opérations, donc triez d'abord le tableau, après le tri , Vérifiez si chaque nombre est supérieur au précédent, il satisfera le plus petit opérande, la preuve est la suivante: en
supposant que le tableau A est ordonné, le numéro précédent doit être inférieur au numéro suivant, si un certain nombre veut devenir Le numéro différent de celui qui le précède doit être ajouté tout le temps. En ce moment, étant donné que ce dernier numéro peut devenir le numéro que vous voulez devenir plus rapide, mais que le numéro que nous avons sauté doit devenir plus grand. Le résultat ci-dessus est donc vrai: le
code est le suivant

    public int minIncrementForUnique(int[] A) {
        Arrays.sort(A);
        int res=0;
        for(int i=1;i<A.length;i++){
            if(A[i]>A[i-1]) continue;
            res=res+A[i-1]+1-A[i];
            A[i]=A[i-1]+1;
        }
        return res;
    }

 

Publié 17 articles originaux · loué 0 · visites 153

Je suppose que tu aimes

Origine blog.csdn.net/qq_33286699/article/details/105030989
conseillé
Classement