【Leetcode】 salto-juego-ii

Descripción del Título

Dada una matriz de números enteros no negativos, inicialmente estás en la posición del primer elemento de la matriz. Los elementos de la matriz representan la longitud máxima que puedes saltar en esta posición. Tu objetivo es usar la menor cantidad de saltos para llegar al último elemento de la matriz. s posición. Por ejemplo, dado el arreglo A = [2,3,1,1,4], se necesitan al menos dos veces para saltar a la posición del último elemento del arreglo. (Desde la posición donde el índice de la matriz es 0, salte la longitud 1 a la posición del índice 1 y luego salte la longitud 3 a la posición del último elemento de la matriz)

Dada una matriz de números enteros no negativos, inicialmente se coloca en el primer índice de la matriz. Cada elemento de la matriz representa la longitud máxima de salto en esa posición. Su objetivo es alcanzar el último índice en el número mínimo de saltos.

Por ejemplo: Dado el arreglo A = [2,3,1,1,4]. El número mínimo de saltos para alcanzar el último índice es 2. (Salte 1 paso del índice 0 al 1, luego 3 pasos hasta el último índice).

análisis del problema

       Dar un salto desde cierta posición i, y saltar a la posición A [i] + i lo más lejos posible, luego a cualquier posición en la posición i + 1 ~ i + A [i] solo se requiere un paso, y solo se requiere una posición para cumplir con el salto Puedes saltar a la distancia más lejana después de despegar en esta posición. El problema se puede dividir en subproblemas, obteniendo la solución óptima de los subproblemas, resolviendo la distancia más larga y obteniendo la solución óptima general.

Análisis de algoritmos

Este problema se puede resolver mediante un pensamiento codicioso. Al resolver la solución local óptima, es decir, la distancia más larga del salto local, se obtiene el número mínimo de saltos. Para la posición i, puede saltar a i + A [i] y definir i + A [i] como cur. Luego, en el rango de i + 1 a cur, encuentre el valor máximo del salto que se puede saltar en este rango. La distancia más lejana para saltar se registra a través de la última variable y se compara con la posición actual. Si es menor que la posición actual, establezca la distancia más lejana cur que se puede saltar en este momento y el número de saltos aumenta en 1. La complejidad temporal del algoritmo es O (n).

Implementación de codificación

public class Solution {
    public int jump(int[] A) {
        int cur=0;  
        int last=0;  
        int step=0; 
        for(int i=0; i<A.length && cur>=i; i++)
        {
            if(i>last)
            {
                last=cur;
                step++;
            }
            cur =cur>(A[i]+i)?cur:(A[i]+i);
        }
        return step;
	}
}

 

Supongo que te gusta

Origin blog.csdn.net/VinWqx/article/details/104909577
Recomendado
Clasificación