【问题标题】:Jump Game in recursion递归跳跃游戏
【发布时间】:2020-03-06 21:46:44
【问题描述】:

我正在尝试测试我理解递归的能力,所以我给自己任务以递归方式进行 Jump Game 练习

给定一个非负整数数组,你最初位于数组的第一个索引处。数组中的每个元素代表你在该位置的最大跳跃长度。你的目标是到达最后一个索引最少的跳跃次数。

https://leetcode.com/problems/jump-game-ii/

我尝试了这部分代码,但它没有出现在调试器上,所以我没有真正看到这个问题

def function(array, index, counter):
    if index >= len(array):
        return counter
    min_step = float('inf')
    for i in range(1, array[index]):
        min_step = min(min_step, function(array, index + i, counter + 1))

    return min(min_step, function(array[1:], index, counter))

如果有人能判断我的思路是否正确

谢谢你:)

【问题讨论】:

    标签: python arrays recursion


    【解决方案1】:

    你的功能很不错,只是一些修复:

    1. 您想到达最后一个索引,即len(array) - 1,而不是len(array)
    2. 您希望能够跳转到不超过并包含当前数组值的距离,因此您需要range(1, array[index] + 1) 而不是range(1, array[index])
    3. min_step 已经包含最少数量的跳转。我不确定您要返回什么,但您可以return min_step

    考虑到这一点:

    def function(array, index, counter):
        if index >= len(array) - 1:
            return counter
        min_step = float('inf')
        for i in range(1, array[index] + 1):
            min_step = min(min_step, function(array, index + i, counter + 1))
    
        return min_step
    

    【讨论】:

    • 只是为了确保时间复杂度是 O(n+max(array)) ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多