Leetcode brushing record-45. Juego de saltos II

Inserte la descripción de la imagen aquí

No entiendo por qué la dificultad de esta pregunta es "difícil"

El título significa que, dada una lista, comenzando desde la posición [0], puede saltar en la mayoría de los números [0] hasta ahora.
Elija una estrategia para llegar al final del equipo y el número mínimo de saltos (dado que se debe alcanzar el final del equipo)

Nuestra estrategia:
primero agregamos i a cada elemento de la matriz de entrada nums [i], para obtener una nueva matriz, el significado es despegar de cada posición, la posición más lejana puede ser
recordada, nums El significado de cambia, ya no es una matriz de entrada.
Comenzamos desde nums [0] y definimos el contador.
Cada vez que vemos por primera vez si podemos saltar directamente desde nums [i] al final del equipo, si podemos, devolvemos la suma + 1 directamente
. Mirando los números en el rango más lejano al que podemos saltar, ¿cuál es el más grande?
(Esto se debe a que debemos considerar el número mínimo de saltos hasta el final, luego, cada vez que debemos elegir el trampolín central que esté más cerca del final del equipo después del salto).
Aquí hay un caso especial, suponiendo que haya múltiples máximos iguales, tomamos la mayor cantidad El valor máximo detrás es el trampolín.
Luego saltamos a este trampolín y comenzamos el siguiente salto

class Solution:
    def jump(self, nums: List[int]) -> int:
        suma = 0
        length = len(nums)
        nums = [i + value for i,value in enumerate(nums)]
        print(nums)
        this = 0
        while this < length - 1:
            tempmax = 0
            tempindex = 0
            end = min(length,nums[this] + 1)
            if nums[this] >= length - 1:
                return suma + 1
            #自身不能达到队尾,找最大的那个,若包含若干个最大找最后的那个
            for i in range(this,end):
                #看有无跳板能直接跳到队尾的
                if nums[i] >= length - 1:
                    return suma + 2  
                #若无上述跳板,找最大 最后                                                                                                                       
                if nums[i] >= tempmax:
                    tempmax = nums[i] 
                    tempindex = i 
            this = tempindex
            print(this,nums[this])
            suma += 1
            if tempmax >= length-1:
               return suma + 1
        return suma
Publicado 43 artículos originales · elogiado 14 · 20,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/weixin_41545780/article/details/105363311
Recomendado
Clasificación