LeetCode Brushing Notes_55. Juego de saltos

El tema es de LeetCode

55. Juego de saltos

Se puede acceder a otras soluciones o código fuente: tongji4m3

descripción

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, 然后再从位置 1 跳 3 步到达最后一个位置。

Ejemplo 2:

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

Ideas

//伪代码
int i=0;//所处位置
int jump=0;//能跳到的最远位置
while(i<=jump)
{
    
    
    jump=max(jump,i+nums[i]);//i+nums[i]为通过i位置能跳到的最远处
    if(jump>=nums.length-1) return true;
    ++i;//不断往前走一格
}
return false;

Código

public boolean canJump(int[] nums)
{
    
    
    int i = 0;//所处位置
    int jump = 0;//能跳到的最远位置
    while (i <= jump)
    {
    
    
        jump = Math.max(jump, i + nums[i]);//i+nums[i]为通过i位置能跳到的最远处
        if (jump >= nums.length - 1) return true;
        ++i;//不断往前走一格
    }
    return false;
}

Análisis de complejidad

complejidad del tiempo

O (N) O (N) O ( N ) , solo es necesario atravesar la matriz una vez

Complejidad espacial

O (1) O (1) O ( 1 ) , solo dos índices

Supongo que te gusta

Origin blog.csdn.net/weixin_42249196/article/details/108251306
Recomendado
Clasificación