跳跃游戏 I - VII
跳跃游戏
- [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
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相关推荐
- LeetCode——1871. 跳跃游戏 VII(Jump Game VII)[中等]——分析及代码(Java)
LeetCode--1871. 跳跃游戏 VII[Jump Game VII][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 + 队列 (1)思路 (2)代码 (3)结果 ...
- 5765. 跳跃游戏 VII
5765. 跳跃游戏 VII 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump .一开始,你在下标 0 处,且该位置的值一定为 '0' .当同时满足如下条件时 ...
- 1871. 跳跃游戏 VII
跳跃游戏 VII 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump .一开始,你在下标 0 处,且该位置的值一定为 '0' .当同时满足如下条件时,你可以从下 ...
- LeetCode 1871. 跳跃游戏 VII(贪心)
文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump . 一开始,你在下标 0 处,且该位置的值一定为 '0' . ...
- LeetCode 55. 跳跃游戏(贪心)
1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1:输入: [2,3,1,1,4] 输出: ...
- 跳跃游戏 (动态规划剪枝/前缀和/滑动窗口/BFS剪枝)
一.跳跃游戏简单介绍 1. 跳跃游戏简单介绍 跳跃游戏是一种典型的算法题目,经常是给定一数组arr,从数组的某一位置i出发,根据一定的跳跃规则,比如从i位置能跳arr[i]步,或者小于arr[i]步, ...
- leetcode-45 跳跃游戏II
给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [2,3,1,1,4] 输 ...
- LeetCode-笔记-45.跳跃游戏II-贪心算法
LeetCode-笔记-45.跳跃游戏II-贪心算法 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后 ...
- 《LeetCode力扣练习》第55题 跳跃游戏 Java
<LeetCode力扣练习>第55题 跳跃游戏 Java 一.资源 题目: 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大 ...
最新文章
- 35 利用构造函数和原型对象实现继承
- .NET仓储模式高级用例
- (求助)即时发送异常给开发人员
- IntelliJ IDEA 的 Project Structure 窗口中的 Artifacts 勾选 Include in project build
- 孩子上了高一突然学不懂了,该怎么办?
- 斐波那契数列的递归与迭代写法比较
- codeforces 711A A. Bus to Udayland(水题)
- 简单好用的js 压缩工具
- 使用inkscape制作logo
- Docker-常用基础命令整理
- 【Shading】Applying Textures 应用纹理
- 阿里p8级软件测试被裁,能拿多少赔偿金?
- 计算机应用技能实验报告实验五,实验五excel应用—制作学生成绩表
- ubuntu卸载xilinx
- java 抽象final_java抽象、接口 和final
- Mac电脑怎样自定义Safari浏览器主页?
- 前端 js 上传excel表格、文件
- 失联客机大致位置确认 美军水下航行器展开搜寻
- 获取微信小程序的昵称和手机号
- svn禁止访问“/svn/project/!svn/act解决办法