当前位置: 首页 > news >正文

算法通关村第十七关:黄金挑战-跳跃游戏问题

黄金挑战-跳跃游戏问题

1. 跳跃游戏

LeetCode 55
https://leetcode.cn/problems/jump-game/

思路分析

在这里插入图片描述

关键是判断能否到达终点,不用管每一步跳跃到哪里,而是尽可能的跳跃到最远的位置
看最多能覆盖到哪里,只要不断更新能覆盖的距离,最后能覆盖到末尾就行了

具体执行:

  1. 定义一个cover表示能最远达到的方位,i每次移动只能在其 cover 范围内移动
  2. 每移动一次,根据该元素值重新更新cover,cover = max(该元素补充后范围,cover本身范围)
  3. 如果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时,更新right,step+1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码实现


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
http://www.lryc.cn/news/158808.html

相关文章:

  • Git GitHub GitLab
  • 前端的规范
  • 嵌入式软件有限状态机的 C 语言实现
  • 面试题常考:LRU缓存
  • Redis 教程 - 持久化
  • 2023 大学生数学建模竞赛-C题-第一问
  • 设计模式3 观察者模式
  • 如何防止网络安全攻击
  • 怎么从0到1实现一个PHP框架?
  • 脚本:python实现樱花树
  • 公司内部传文件怎么安全——「用绿盾透明加密软件」
  • 提高使用VS Code工作效率的技巧
  • 软件系统兼容性测试都要注意哪些问题?
  • 索尼 toio™应用创意开发征文|toio俄罗斯方块游戏
  • C#事件event
  • 气传导耳机什么牌子好?盘点五款好用的气传导耳机分享
  • 业绩走低,毛利率下滑,海外市场能否成为极米科技救命稻草?
  • 轻松敏捷开发流程之Scrum
  • Vue3+Element Plus实现el-table跨行显示(非脚手架)
  • 生成订单30分钟未支付,则自动取消,该怎么实现?
  • WebGIS外包开发流程
  • pytorch学习——LSTM和GRU
  • 【Python】Python 利用模块实现单例模式
  • 雅思写作 三小时浓缩学习顾家北 笔记总结(四)
  • 深入学习与探索:高级数据结构与复杂算法
  • CV:计算机视觉CV运用领域
  • 开源机密计算平台:蓬莱-OpenHarmony
  • 大一大二一心学算法的利弊
  • c#using关键字的作用
  • 只依赖OPENCV的工作服安全帽检测YOLOV8S