El algoritmo codicioso es simple: un juego de saltos

     Descripción del Título:

Dada una matriz de enteros no negativos, inicialmente se encuentra en la primera posición de la matriz.

Cada elemento de la matriz representa la longitud máxima que puede saltar en esa posición.

Determina si puedes llegar a la última posición.

Ejemplo 1:

Entrada: [2,3,1,1,4]
Salida: verdadera
Explicación: Podemos saltar 1 paso primero, pasar de la posición 0 a la posición 1 y luego saltar 3 pasos de la posición 1 a la última posición.
Ejemplo 2:

Entrada: [3,2,1,0,4]
Salida: falso
Explicación: Pase lo que pase , siempre alcanzará la posición del índice 3. Pero la longitud máxima del salto en esta posición es 0, por lo que nunca podrás alcanzar la última posición.

 

Idea: algoritmo codicioso, cada vez que encuentre el valor máximo del valor de la matriz que se puede saltar, vea si puede saltar hasta el final a través de este valor máximo. No se puede saltar hasta el final, elija el valor más grande para saltar. Luego repita la operación anterior.

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int n = nums.size();
        int rightmost = 0;  //最远可以到达的地方

		//遍历数组
        for (int i = 0; i < n; ++i) {
            if (i <= rightmost) {
				//如果较大值可以到达,则说明可以到达
                rightmost = max(rightmost, i + nums[i]);
                if (rightmost >= n - 1) {
                    return true;
                }
            }
        }
        return false;
    }
};

 

Dirección de referencia: https://leetcode-cn.com/problems/jump-game/solution/tiao-yue-you-xi-by-leetcode-solution/

Supongo que te gusta

Origin blog.csdn.net/ma2595162349/article/details/108883444
Recomendado
Clasificación