LeetCode Sword Pointer Offer II 006. La somme de deux nombres dans un tableau trié (implémentation Java)

Sword Points Offer II 006. La somme de deux nombres dans un tableau trié

Étant donné un tableau de nombres entiers triés par ordre croissant , veuillez trouver deux nombres du tableau dont la somme est égale au nombre cible cible.

La fonction doit renvoyer les valeurs d'indice de ces deux nombres sous la forme d'un tableau d'entiers de longueur 2. Les indices des nombres commencent à compter à partir de 0 , le tableau de réponses doit donc satisfaire 0 <= réponse[0] < réponse[1] < nombres.longueur.

Supposons qu’il y ait et qu’il n’y ait qu’une seule paire de nombres qualifiés dans le tableau et qu’un nombre ne puisse pas être utilisé deux fois.

Exemple 1:

输入:numbers = [1,2,4,6,10], target = 8
输出:[1,3]
解释:26 之和等于目标数 8 。因此 index1 = 1, index2 = 3

Exemple 2 :

输入:numbers = [2,3,4], target = 6
输出:[0,2]

Exemple 3 :

输入:numbers = [-1,0], target = -1
输出:[0,1]

indice:

  • 2 <= nombres.longueur <= 3 * 10^4
  • -1000 <= nombres[i] <= 1000
  • nombres par ordre croissant
  • -1000 <= cible <= 1000
  • Il n'y a qu'une seule réponse valable

Idées de réponses :

  • Créez un nouveau tableau de longueur 2 pour stocker l'indice du tableau d'origine qui répond aux exigences
  • Utilisez deux tours de boucles for dans le tableau d'origine, s'il existe une situation où la somme des deux nombres est égale à la valeur cible
  • Utilisez ensuite le nouveau tableau pour enregistrer les indices du tableau d'origine des deux éléments qui répondent aux exigences.
  • Enfin, renvoyez le nouveau tableau
class Solution {
    
    
    public int[] twoSum(int[] numbers, int target) {
    
    
        int []res=new int[2];       //创建一个大小为2的数组用于存储满足题设要求的下标
        a:for(int i=0;i<numbers.length;i++){
    
        //双层for循环依次遍历
            for(int j=i+1;j<numbers.length;j++){
    
    
                if((numbers[i]+numbers[j])==target){
    
    //当满足数组中两元素相加为目标元素时,记录其下标,并用数组存储
                    res[0]=i;//res[0]=numbers[i];
                    res[1]=j;//res[1]=numbers[j];
                    break a;
                }
            }
        }
        return res;
    }
}

Guess you like

Origin blog.csdn.net/qq_44243059/article/details/125897794