[Pratique quotidienne] - résolution de deux nombres

Titre description

Étant donné un tableau entier nums et une cible de valeur cible, et vous demander d'identifier la valeur cible des deux entiers dans le tableau, et revenir à leur indice de tableau. Vous pouvez supposer que chaque entrée correspond à une seule réponse. Cependant, vous ne pouvez pas réutiliser le même élément de tableau.
Le titre provient de l'leetcode, cliquez pour entrer

Lire le titre

Exemple:
Compte tenu de nums = [2, 7, 11 , 15], cible = 9
parce que nums [0] + nums [1 ] = 2 + 7 = 9
est renvoyé [0, 1]

Solution A

D' abord avec un méthodes de résolution relativement faible, la double boucle pour traverser le réseau pour résoudre
ce deuxième cycle i + 1 à partir de la partie de début du cycle peut être réduite, comme dans le cycle précédent a été valeur vérifiée est inférieure à l'indice i est peu susceptible d'être position i obtenue en ajoutant la valeur de la cible.

public static int[] twoSum(int[] nums, int target) {
        for (int i = 0; i < nums.length; i++) {
            int numA = nums[i];
            int numB = target - numA;
            for (int j = i+1; j < nums.length; j++) {
                if(numB == nums[j]){
                    return new int[]{i,j};
                }
            }

        }
        return null;
    }

solution deux

nous devons non seulement déterminer ici s'il y a valeur dans ce tableau, vous devez également obtenir son emplacement, il est clair que la table de hachage est la meilleure façon de

public static int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> map  = new HashMap<Integer,Integer>();
        for (int i = 0; i < nums.length; i++) {
            int numA = nums[i];
            int numB = target - numA;
            if(map.containsKey(numB)){
                return new int[]{map.get(numB),i};
            }
            map.put(numA,i);

        }
        return null;
    }

Cela ne doit traverser à nouveau le tableau, l'efficacité est améliorée beaucoup.

Publié 26 articles originaux · louange gagné 6 · vues 2936

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45676630/article/details/105179573
conseillé
Classement