跳跃游戏

  • [55. 跳跃游戏](https://leetcode.cn/problems/jump-game/)
  • [45. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/)
  • [1306. 跳跃游戏 III](https://leetcode.cn/problems/jump-game-iii/)
  • [1345. 跳跃游戏 IV](https://leetcode.cn/problems/jump-game-iv/)
  • [1340. 跳跃游戏 V](https://leetcode.cn/problems/jump-game-v/)
  • 1696. 跳跃游戏 VI
  • 1871. 跳跃游戏 VII
  • LCP 09. 最小跳跃次数
  • 1654. 到家的最少跳跃次数
  • 剑指 Offer 10- II. 青蛙跳台阶问题
  • 975. 奇偶跳
  • 403. 青蛙过河
  • 1377. T 秒后青蛙的位置
  • 935. 骑士拨号器
  • 1728. 猫和老鼠 II

55. 跳跃游戏

class Solution:def canJump(self, nums: List[int]) -> bool:# 0 就是坑,看能不能跳过去# if all(nums): return Truen, right = len(nums), 0 # 最大覆盖范围for i, x in enumerate(nums):# 说明掉进坑了if i > right: return False right = max(right, i + x)                 if right >= n - 1: return True

45. 跳跃游戏 II

class Solution:def jump(self, nums: List[int]) -> int:n = len(nums)# [2,3,1,1,4]# 起跳点从索引 0 开始,最远可跳到 2,更新 maxPos = 2, 此时 end = 2;# 起跳点可以是索引 1 or 2, 最远可跳到 4, 完成跳跃。maxPos, end, step = 0, 0, 0for i, x in enumerate(nums[:-1]):if i + x > maxPos:maxPos = i + xif i == end: # 完成一次跳跃end = maxPosstep += 1return step

1306. 跳跃游戏 III

class Solution:def canReach(self, arr: List[int], start: int) -> bool:def f(i):x = arr[i]if not x: return Truevis.add(i)for j in [i + x, i - x]:if 0 <= j < n and j not in vis:if f(j): return Truereturn Falsevis = set()n = len(arr)return f(start)

1345. 跳跃游戏 IV

数组可以抽象为一个无向图,数组元素为图的顶点,相邻或值相同的元素之间有一条无向边相连。每条边的权重都为 1,即此图为无权图。求从第一个元素到最后一个元素的最少操作数,即求从第一个元素到最后一个元素的最短路径长度。

class Solution:def minJumps(self, arr: List[int]) -> int:d, q, vis, n = defaultdict(list), deque([[0, 0]]), set([0]), len(arr)for i, val in enumerate(arr): d[val].append(i)while q:idx, step = q.popleft()if idx == n - 1: return stepv = arr[idx]step += 1if idx > 0 : d[v].append(idx - 1)if idx < n - 1: d[v].append(idx + 1)for i in d[v]: # 与 idx 相邻或相同元素之间一步可达。if i not in vis:q.append([i, step])vis.add(i)del d[v]
class Solution:def minJumps(self, arr: List[int]) -> int:n = len(arr)d = defaultdict(set)for i, x in enumerate(arr):d[x].add(i)vis = set()step = 0q = {0, }while q: # 谁先到谁最短     if n-1 in q: return steptmp = set()for i in q:                       vis.add(i)if i: tmp.add(i-1)tmp.add(i+1)tmp.update(d[arr[i]])d.pop(arr[i])step += 1q = tmp - vis

1340. 跳跃游戏 V

class Solution:def maxJumps(self, arr: List[int], d: int) -> int:def dfs(i):if q[i] != -1: returnq[i] = 1j = i - 1while j >= 0 and i - j <= d and arr[i] > arr[j]:dfs(j)q[i] = max(q[i], q[j] + 1)j -= 1j = i + 1while j < n and j - i <= d and arr[i] > arr[j]:dfs(j)q[i] = max(q[i], q[j] + 1)j += 1n = len(arr)q = [-1] * nfor i in range(n):dfs(i)return max(q)

1696. 跳跃游戏 VI

1871. 跳跃游戏 VII

LCP 09. 最小跳跃次数

1654. 到家的最少跳跃次数

剑指 Offer 10- II. 青蛙跳台阶问题

975. 奇偶跳

403. 青蛙过河

1377. T 秒后青蛙的位置

935. 骑士拨号器

1728. 猫和老鼠 II

跳跃游戏 I - VII相关推荐

  1. LeetCode——1871. 跳跃游戏 VII(Jump Game VII)[中等]——分析及代码(Java)

    LeetCode--1871. 跳跃游戏 VII[Jump Game VII][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 + 队列 (1)思路 (2)代码 (3)结果 ...

  2. 5765. 跳跃游戏 VII

    5765. 跳跃游戏 VII 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump .一开始,你在下标 0 处,且该位置的值一定为 '0' .当同时满足如下条件时 ...

  3. 1871. 跳跃游戏 VII

    跳跃游戏 VII 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump .一开始,你在下标 0 处,且该位置的值一定为 '0' .当同时满足如下条件时,你可以从下 ...

  4. LeetCode 1871. 跳跃游戏 VII(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump . 一开始,你在下标 0 处,且该位置的值一定为 '0' . ...

  5. LeetCode 55. 跳跃游戏(贪心)

    1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1:输入: [2,3,1,1,4] 输出: ...

  6. 跳跃游戏 (动态规划剪枝/前缀和/滑动窗口/BFS剪枝)

    一.跳跃游戏简单介绍 1. 跳跃游戏简单介绍 跳跃游戏是一种典型的算法题目,经常是给定一数组arr,从数组的某一位置i出发,根据一定的跳跃规则,比如从i位置能跳arr[i]步,或者小于arr[i]步, ...

  7. leetcode-45 跳跃游戏II

    给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [2,3,1,1,4] 输 ...

  8. LeetCode-笔记-45.跳跃游戏II-贪心算法

    LeetCode-笔记-45.跳跃游戏II-贪心算法 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后 ...

  9. 《LeetCode力扣练习》第55题 跳跃游戏 Java

    <LeetCode力扣练习>第55题 跳跃游戏 Java 一.资源 题目: 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大 ...

最新文章

  1. 35 利用构造函数和原型对象实现继承
  2. .NET仓储模式高级用例
  3. (求助)即时发送异常给开发人员
  4. IntelliJ IDEA 的 Project Structure 窗口中的 Artifacts 勾选 Include in project build
  5. 孩子上了高一突然学不懂了,该怎么办?
  6. 斐波那契数列的递归与迭代写法比较
  7. codeforces 711A A. Bus to Udayland(水题)
  8. 简单好用的js 压缩工具
  9. 使用inkscape制作logo
  10. Docker-常用基础命令整理
  11. 【Shading】Applying Textures 应用纹理
  12. 阿里p8级软件测试被裁,能拿多少赔偿金?
  13. 计算机应用技能实验报告实验五,实验五excel应用—制作学生成绩表
  14. ubuntu卸载xilinx
  15. java 抽象final_java抽象、接口 和final
  16. Mac电脑怎样自定义Safari浏览器主页?
  17. 前端 js 上传excel表格、文件
  18. 失联客机大致位置确认 美军水下航行器展开搜寻
  19. 获取微信小程序的昵称和手机号
  20. svn禁止访问“/svn/project/!svn/act解决办法

热门文章

  1. Verilog笔记——数据检测/独热码检测——Quartus与Modelsim仿真
  2. 银行项目业务系统必备
  3. 数据挖掘之ID3算法
  4. IO操作和DMA、RDMA
  5. 【老照片智能修复软件】AKVIS Retoucher v9.5.1286 中文版
  6. 微信小程序页面背景图片设置
  7. ubuntu配置网卡
  8. 为华生物马来酰亚胺-聚乙二醇-聚(D,L-丙交酯-co-乙交酯)PLGA-PEG-Maleimide试剂材料的作用
  9. bes2300之anc(十二)
  10. 高版本sql server数据库复制到低版本sql server数据库