营销策划方案ppt,汕头网络推广seo渠道,福田网站建设流程,注册网站乱填邮箱黄金挑战-跳跃游戏问题
1. 跳跃游戏
LeetCode 55 https://leetcode.cn/problems/jump-game/
思路分析 关键是判断能否到达终点#xff0c;不用管每一步跳跃到哪里#xff0c;而是尽可能的跳跃到最远的位置 看最多能覆盖到哪里#xff0c;只要不断更新能覆盖的距离#x…黄金挑战-跳跃游戏问题
1. 跳跃游戏
LeetCode 55 https://leetcode.cn/problems/jump-game/
思路分析 关键是判断能否到达终点不用管每一步跳跃到哪里而是尽可能的跳跃到最远的位置 看最多能覆盖到哪里只要不断更新能覆盖的距离最后能覆盖到末尾就行了
具体执行
定义一个cover表示能最远达到的方位i每次移动只能在其 cover 范围内移动每移动一次根据该元素值重新更新covercover max(该元素补充后范围cover本身范围)如果cover大于等于终点下标返回ture
代码实现
class Solution:def canJump(self, nums: List[int]) - bool:cover 0n len(nums)for i in range(n):# 判断是能能够到达 i 的位置if cover i:return Falsecover max(i nums[i], cover)if cover n - 1:return Truereturn False
2. 最短跳跃游戏
LeetCode 45 https://leetcode.cn/problems/jump-game-ii/
思路分析
贪心双指针
设置四个变量
left 一步步遍历数组steps 记录到达当前位置的最少步数right 表示当前步数能够覆盖到的最大范围left到达right时更新rightstep1 代码实现 class Solution:def jump(self, nums: List[int]) - int:n len(nums)steps 0max_position 0right 0for left in range(n-1):max_position max(max_position, nums[left] left)if left right:right max_positionsteps 1return steps