leetcode 1345. Jump Game IV | 1345. 跳跃游戏 IV(BFS)
题目
https://leetcode.com/problems/jump-game-iv/
题解
好久没做 hard 了,今天时间多,挑战一下。用 lqy 同学的话说,这题叫做 “苦难题”,哈哈哈。
暴力解其实不难,就是个带 seen 数组的 BFS,看草稿吧~
class Solution {public int minJumps(int[] arr) {Map<Integer, Set<Integer>> map = new HashMap<>();for (int i = 0; i < arr.length; i++) {Set<Integer> set = map.getOrDefault(arr[i], new HashSet<>());set.add(i);map.put(arr[i], set);}Set<Integer> seen = new HashSet<>();LinkedList<Integer> queue = new LinkedList<>();queue.add(0);int jump = 0;while (true) {LinkedList<Integer> nextQueue = new LinkedList<>();while (!queue.isEmpty()) {Integer index = queue.poll();seen.add(index);if (index == arr.length - 1) return jump;if (index - 1 >= 0) {if (!seen.contains(index - 1)) nextQueue.add(index - 1);else map.get(arr[index]).remove(index - 1);}if (index + 1 < arr.length && !seen.contains(index + 1)) {if (!seen.contains(index + 1)) nextQueue.add(index + 1);else map.get(arr[index]).remove(index + 1);}for (Integer i : map.get(arr[index])) {if (!seen.contains(i)) nextQueue.add(i);
// else map.get(arr[i]).remove(i);}map.get(arr[index]).clear();}queue = nextQueue;jump++;}}
}
leetcode 1345. Jump Game IV | 1345. 跳跃游戏 IV(BFS)相关推荐
- 【leetcode】Jump Game I, II 跳跃游戏一和二
题目: Jump Game I: Given an array of non-negative integers, you are initially positioned at the first ...
- leetcode 1306. Jump Game III | 1306. 跳跃游戏 III(BFS)
题目 https://leetcode.com/problems/jump-game-iii/ 题解 正如 hint 所说: 用 BFS,跳过的就不跳了,直到全部跳过,即 count == arr.l ...
- 1345. 跳跃游戏 IV
Powered by:NEFU AB-IN Link 文章目录 1345. 跳跃游戏 IV 题意 思路 代码 1345. 跳跃游戏 IV 题意 略 思路 先用哈希表将每个相同元素的位置记下来,每个形成 ...
- LeetCode算法题6:贪心 - 跳跃游戏
文章目录 前言 贪心算法: 一.跳跃游戏 思路 二.跳跃游戏II 思路 总结 前言 贪心算法系列:(之前还有一篇文章描述的也是贪心算法:https://blog.csdn.net/Little_ant ...
- Leetcode 1345 跳跃游戏 IV
题目 给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0). 每一步,你可以从下标 i 跳到下标: i + 1 满足:i + 1 < arr.length i - 1 满足:i ...
- leetcode:跳跃游戏 IV
dijk 22/32 class Solution {public:int minJumps(vector<int>& arr) {// dijk? 最短路径?if(arr.siz ...
- 【Leetcode刷题Python】55. 跳跃游戏
1 题目 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个下标. 示例 1: 输入:nums = [2 ...
- 2022.01.21 - 215.跳跃游戏 IV
文章目录 1. 题目 2. 思路 (1) BFS 3. 代码 1. 题目 2. 思路 (1) BFS 首先统计每个值出现的所有位置,然后从头开始广度优先搜索. 由于从头开始的步数必然是最小的,因此,先 ...
- LeetCode 45. 跳跃游戏 II(贪心/BFS,难)
文章目录 1. 题目 2. 解题 2.1 贪心 2.2 BFS 1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的 ...
最新文章
- Python命令行参数学习
- c bool 类型检查_C语言和C+的区别是什么?8个点通俗易懂的告诉你!
- mongoDB条件操作符
- Python 重写父类方法
- Centos6.5_x86_64 编译安装Subversion-1.8.5
- 到底什么是API经济
- 嗨淘V12刷任务点赞系统源码手动派单版本
- 双十一快到了,快递却不干了?
- .set伪指令(mips)
- C#将Access数据库导出为JSON
- 批量删除Cookie(实用)
- SSIS实践入门1:我的第一个SSIS程序开发
- 2011年11月份第二周51Aspx源码发布详情
- java百度地图离线开发_【“零起点”--百度地图手机SDK】如何使用离线地图?
- java矩形排样_优化排样(板材矩形一刀切算法)
- kaldi 语音识别 lattice-free MMI声学训练
- SpringBoot项目运行时出现A cookie header was received警告问题
- C#丨DataGridView控件获取选中行的某一列的值
- Revit API之BoundingBoxXYZ的用法和剖面框(Section Box)
- python之函数用法isupper()
热门文章
- 图书管理系统c++_校园图书系统写后感
- python爬虫-爬取今日头条(图集)
- EOJ_1102_任务调度问题
- php图片变成代码怎么解决,一段图片处理代码PHP代码转C#代码,该怎么解决
- emlog充值插件_常用十大必备Emlog插件
- __stdcall和__cdecl的区别
- VC批量拷贝,移动,删除文件---SHFileOperation
- C语言程序设计 | 扫雷游戏
- MongoDB可视化工具--Robo 3T 使用教程
- 一道非常经典C++面试题|大厂面试