每日一题20201115(55. 跳跃游戏)

简介: 方法跳跃游戏

55. 跳跃游戏


19.jpg

image.png

方法一: 贪心算法


维护一个能跳到最大距离的变量,遍历数组,每次更新这个变量。可以遍历完成后比较这个值与数组的长度-1,也可以每次遍历的时候判断是否大于了数组长度-1,如果是则直接return
class Solution:
    def canJump(self, nums: List[int]) -> bool:
        max_distance = 0
        for i, n in enumerate(nums):
            # 当i = 0的时候,最大距离肯定为0,i > max_distance是因为第i个索引的位置都跳不到就更不可能跳到最后一个了,这时候跳出循环
            if i > max_distance and i != 0:
                break
            if n + i > max_distance:
                max_distance = n + i
        # 最后判断是否大于等于数组长度-1(也就是能达到最后一个元素)
        return max_distance >= len(nums) - 1

20.jpg

image.png

方法二 动态规划(一开始的思路,Python直接超时, 可以上go)


思路也很简单,类似于跳台阶,维护一个dp数组,看达到最后一个台阶的方式有多少种,并判断他是否大于0.
func canJump(nums []int) bool {
    if len(nums) == 0 {
        return false
    }
    result := make([]int, len(nums), len(nums))
    for i, _ := range nums {
        if i == 0 {
            result[i] = 1
            continue
        }
        for j:=0; j<i; j++ {
            if nums[j] >= i-j {
                result[i] += result[j]
            }
        }
    }
    return result[len(nums)-1] > 0
}

21.jpg

image.png




相关文章
|
5天前
|
算法
【力扣】55.跳跃游戏
【力扣】55.跳跃游戏
|
5天前
|
算法 Java
leetcode-55:跳跃游戏
leetcode-55:跳跃游戏
31 0
|
5天前
|
Java 索引
leetcode-45:跳跃游戏 II
leetcode-45:跳跃游戏 II
26 0
|
11月前
|
算法 安全 Swift
LeetCode - #55 跳跃游戏
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
11月前
|
算法
leetcode:55.跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。
52 0
|
11月前
|
算法
leetcode:45.跳跃游戏 II
给定一个非负整数数组,你最初位于数组的第一个位置。
54 0
|
UED
你也能做一个跳跃+答题游戏
这个小游戏示例其实是模仿了一个叫反诈总动员(点击左侧体验)的微信小游戏,这个小游戏是几位民警合同和志愿者利用微信小游戏制作工具做出来的,用于宣传反诈知识。这是一个公益的游戏项目,大家可以试玩并分享一下,帮助更多的人了解预防诈骗的知识。
47 0
|
小程序 UED Windows
零基础做个跳跃答题小游戏
嗨!大家好,我是小蚂蚁。 今天分享一篇零基础的答题小游戏制作教程,无需具备任何的开发经验或基础,使用一个游戏模版,跟随着详细的教程,任何人都能够定制一个自己的跳跃答题小游戏。 首先,我们来看一下跳跃答题小游戏的模版,长按识别下方的小程序码,即可体验。
79 0
|
算法 索引
leetcode每日一题:55. 跳跃游戏
leetcode每日一题:55. 跳跃游戏
|
算法 测试技术 索引
leetcode每日一题:45. 跳跃游戏 II
leetcode每日一题:45. 跳跃游戏 II