Categorías
Algorithms

LeetCode – Posición de inserción de búsqueda (Java)

Dada una matriz ordenada y un valor objetivo, devuelve el índice si se encuentra el objetivo. De lo contrario, devuelva el índice donde estaría si estuviera insertado en orden. Puede asumir que no hay duplicados en la matriz.

A continuación se muestran algunos ejemplos.

[1,3,5,6], 5 -> 2
[1,3,5,6], 2 -> 1
[1,3,5,6], 7 -> 4
[1,3,5,6], 0 -> 0

Solución Java

Este es un problema de búsqueda binaria. La complejidad debe ser O (log (n)).

public int searchInsert(int[] nums, int target) {
    if(target>nums[nums.length-1]){
        return nums.length;
    }
 
    int l=0;
    int r=nums.length-1;
 
    while(l<r){
        int m = l+(r-l)/2;
        if(target>nums[m]){
            l=m+1;
        }else{
            r=m;
        }
    }
 
    return l;
}

O de manera similar, podemos escribir la solución de la siguiente manera:

public int searchInsert(int[] nums, int target) {
    int i=0; 
    int j=nums.length-1;
 
    while(i<=j){
        int mid = (i+j)/2;
 
        if(target > nums[mid]){
            i=mid+1;
        }else if(target < nums[mid]){
            j=mid-1;
        }else{
            return mid;
        }
    }
 
    return i;
}

  LeetCode - Reloj binario (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *