Categorías
Algorithms Interview Java

LeetCode – Juego de salto (Java)

Dada una matriz de enteros no negativos, inicialmente se ubica en el primer índice de la matriz. Cada elemento de la matriz representa su longitud máxima de salto en esa posición. Determina si puedes llegar al último índice. Por ejemplo: A = [2,3,1,1,4], devuelve verdadero. A = [3,2,1,0,4], falso retorno.

Análisis

Podemos rastrear el índice máximo que se puede alcanzar. La clave para resolver este problema es encontrar: 1) cuando la posición actual no puede alcanzar la siguiente posición (devolver falso), y 2) cuando el índice máximo puede llegar al final (devolver verdadero).

El índice más grande que se puede alcanzar es: i + A[i].

Aquí hay un ejemplo:

Solución Java

public boolean canJump(int[] A) {
    if(A.length <= 1)
        return true;
 
    int max = A[0]; //max stands for the largest index that can be reached.
 
    for(int i=0; i<A.length; i++){
        //if not enough to go to next
        if(max <= i && A[i] == 0) 
            return false;
 
        //update max    
        if(i + A[i] > max){
            max = i + A[i];
        }
 
        //max is enough to reach the end
        if(max >= A.length-1) 
            return true;
    }
 
    return false;    
}

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 *