LeetCode 35. Recherche de position d'insertion (implémentation Java)

35. Rechercher la position d'insertion

Étant donné un tableau trié et une valeur cible, recherchez la valeur cible dans le tableau et renvoyez son index. Si la valeur cible n'existe pas dans le tableau, renvoie la position à laquelle elle sera insérée séquentiellement.

Veuillez utiliser un algorithme avec une complexité temporelle de O (log n).

Exemple 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

Exemple 2 :

输入: nums = [1,3,5,6], target = 2
输出: 1

Exemple 3 :

输入: nums = [1,3,5,6], target = 7
输出: 4

indice:

  • 1 <= nombres.longueur <= 10^4
  • -10^4 <= nombres[i] <= 10^4
  • nums est un tableau classé par ordre croissant sans éléments en double .
  • -10^4 <= cible <= 10^4

Idées de réponses :

  • Recherche binaire de tableau
  • Définir left=0 et right=nums.length-1
  • milieu=(gauche+droite)/ 2
  • Si nums[mid]>target, ce sera sur le côté droit de l'indice milieu. Sinon, sur le côté droit, ajustez les valeurs de gauche et de droite pour continuer la recherche.
class Solution {
    
    
    public int searchInsert(int[] nums, int target) {
    
    //二分查找
             //简单的二分查找
        if (nums == null || nums.length == 0) {
    
    
            return 0;
        }
        int left = 0;
        int right = nums.length - 1;
        while (left < right) {
    
    
            int mid = (left + right) / 2;
            if (target == nums[mid]) {
    
    
                return mid;
            } else if (target < nums[mid]) {
    
    
                right = mid - 1;
            } else {
    
    
                left = mid + 1;
            }
        }
        //此时left = right,这里单独处理
        return target <= nums[left] ? left : left + 1;
    }
}

Guess you like

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