【Golang】LeetCode 55. 跳跃游戏

55. 跳跃游戏

题目描述

思路

我们使用贪心的思路来解决这道题。

想要走的尽可能地远,我们就需要在走到某个可用步数比当前可用步数还要大的位置对可用步数的值进行更新。基于以上思路,我们可以令curr := nums[0],然后从i == 1开始对nums数组进行遍历。

每向后遍历一次,curr -= 1,因为要消耗一次步数才能移动到下一格。同时,如果满足curr <= nums[i],我们应该更新curr = nums[i]。因为当前可用的步数curr至少是和nums[i]相等的,如果nums[i]curr还要大,我们显然应该使用nums[i]作为新的可用步数的值,来让我们走得更远。

最后,在每一次循环开始时,判断curr != 0,如果curr == 0,意味着一定走不到终点了,直接返回false

基于以上思路,我们写代码来解决问题。

Golang 题解

go 复制代码
func canJump(nums []int) bool {
    // 每次跳跃到的位置应该是可用步数最大的位置.
    curr := nums[0]
    for i := 1; i < len(nums); i ++ {
        if curr == 0 {
            return false
        }
        curr -= 1
        if nums[i] >= curr {
            curr = nums[i]
        }
    }
    return true
} 
相关推荐
练习时长一年4 小时前
Leetcode热题100(跳跃游戏 II)
算法·leetcode·游戏
小白菜又菜9 小时前
Leetcode 3432. Count Partitions with Even Sum Difference
算法·leetcode
wuhen_n10 小时前
LeetCode -- 15. 三数之和(中等)
前端·javascript·算法·leetcode
sin_hielo10 小时前
leetcode 2483
数据结构·算法·leetcode
Xの哲學11 小时前
Linux多级时间轮:高精度定时器的艺术与科学
linux·服务器·网络·算法·边缘计算
大头流矢11 小时前
归并排序与计数排序详解
数据结构·算法·排序算法
油泼辣子多加12 小时前
【信创】算法开发适配
人工智能·深度学习·算法·机器学习
Aaron158812 小时前
AD9084和Versal RF系列具体应用案例对比分析
嵌入式硬件·算法·fpga开发·硬件架构·硬件工程·信号处理·基带工程
laocooon52385788612 小时前
插入法排序 python
开发语言·python·算法