• 116. 跳跃游戏(存在型动态规划)


    116. 跳跃游戏

    中文English

    给出一个非负整数数组,你最初定位在数组的第一个位置。   

    数组中的每个元素代表你在那个位置可以跳跃的最大长度。    

    判断你是否能到达数组的最后一个位置。

    样例

    样例 1

    输入 : [2,3,1,1,4]
    输出 : true
    

    样例 2

    输入 : [3,2,1,0,4]
    输出 : false
    

    挑战

    这个问题有两个方法,一个是贪心和 动态规划

    贪心方法时间复杂度为O(N)

    动态规划方法的时间复杂度为为O(n^2)

    我们手动设置小型数据集,使大家可以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划的方式解决此问题。如果您用动态规划的方式完成它,你可以尝试贪心法,以使其再次通过一次。

    注意事项

    数组A的长度不超过5000,每个元素的大小不超过5000

     
    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        """
        @param A: A list of integers
        @return: A boolean
        """
        def canJump(self, A):
            # write your code here
            # write your code here
            l = len(A)
    
            dp = [False]*l
            dp[0] = True
    
            #循环每一个位置,外层j循环,内层循环,只要前面的每一个位置均为True,同时需要判断前面是否存在大于当前节点的i + A[i] >= j(说明之前就已经存在可以跳过当前节点)
            for j in range(1,l):
                #判断前面是否存在可以跳到当前位置j
                for i in range(j):
                    if (i + A[i]) >= j and dp[i] == True:
                        dp[j] = True
                        break
            
            return dp[l - 1]
  • 相关阅读:
    设计算法,求AB两个整数集合的交集
    C++函数传递指针面试题
    C++构造函数、析构函数与抛出异常
    c++ 虚函数表解析
    c++ 对象的内存布局
    09 构造函数能调用虚函数吗?
    C++构造函数初始化顺序
    计数排序,基数排序和桶排序
    80 求论坛在线人数
    79 两个整数集合A和B,求其交集
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13022808.html
走看看 - 开发者的网上家园