LeetCode55 juego de saltos (codicioso)

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:

输入: [2,3,1,1,4]
输出: true
解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 13 步到达最后一个位置。

Ejemplo 2:

输入: [3,2,1,0,4]
输出: false
解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。

Idea de algoritmo más código de CA

El número máximo actual de pasos para cada salto, registros maxstep, si la posición actual i es mayor que la posición actual alcanzada, significa que la posición actual i no se puede alcanzar, de lo contrario, se puede alcanzar la posición i, y el valor de llegar se actualiza al mismo tiempo

class Solution {
    
    
public:    
bool canJump(vector<int>& nums) {
    
    
	int maxstep= 0;
	int arrive = 0;
	for(int i = 0; i < nums.size(); i++) {
    
    
	    maxstep = max(i + nums[i], maxstep);
	    if(i > arrive) 
	    {
    
     
	      return false; 
	    }
	    else 
	    {
    
     
	      arrive = maxstep;
	    }
	}
	return true;              
    }
};

Inserte la descripción de la imagen aquí
El tiempo de ejecución es de 12 ms, el consumo de memoria es de 13 MB

Supongo que te gusta

Origin blog.csdn.net/weixin_44925547/article/details/106260770
Recomendado
Clasificación