【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
} 
相关推荐
老洋葱Mr_Onion5 分钟前
【C++】高精度模板
开发语言·c++·算法
脚踏实地皮皮晨31 分钟前
003003002_WPF Grid 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
aaaameliaaa9 小时前
字符函数和字符串函数
c语言·笔记·算法
城管不管10 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
月疯10 小时前
二分法算法(水平等分图形面积)
算法
豆瓣鸡10 小时前
算法日记 - Day3
java·开发语言·算法
白白白小纯11 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
Achou.Wang11 小时前
深入理解go语言-第5章 并发编程——Go的灵魂
大数据·算法·golang
The Chosen One98511 小时前
高进度算法模板速记(待完善)
java·前端·算法
圣保罗的大教堂13 小时前
leetcode 3517. 最小回文排列 I 中等
leetcode