题目

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)相关推荐

  1. 【leetcode】Jump Game I, II 跳跃游戏一和二

    题目: Jump Game I: Given an array of non-negative integers, you are initially positioned at the first ...

  2. leetcode 1306. Jump Game III | 1306. 跳跃游戏 III(BFS)

    题目 https://leetcode.com/problems/jump-game-iii/ 题解 正如 hint 所说: 用 BFS,跳过的就不跳了,直到全部跳过,即 count == arr.l ...

  3. 1345. 跳跃游戏 IV

    Powered by:NEFU AB-IN Link 文章目录 1345. 跳跃游戏 IV 题意 思路 代码 1345. 跳跃游戏 IV 题意 略 思路 先用哈希表将每个相同元素的位置记下来,每个形成 ...

  4. LeetCode算法题6:贪心 - 跳跃游戏

    文章目录 前言 贪心算法: 一.跳跃游戏 思路 二.跳跃游戏II 思路 总结 前言 贪心算法系列:(之前还有一篇文章描述的也是贪心算法:https://blog.csdn.net/Little_ant ...

  5. Leetcode 1345 跳跃游戏 IV

    题目 给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0). 每一步,你可以从下标 i 跳到下标: i + 1 满足:i + 1 < arr.length i - 1 满足:i ...

  6. leetcode:跳跃游戏 IV

    dijk 22/32 class Solution {public:int minJumps(vector<int>& arr) {// dijk? 最短路径?if(arr.siz ...

  7. 【Leetcode刷题Python】55. 跳跃游戏

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

  8. 2022.01.21 - 215.跳跃游戏 IV

    文章目录 1. 题目 2. 思路 (1) BFS 3. 代码 1. 题目 2. 思路 (1) BFS 首先统计每个值出现的所有位置,然后从头开始广度优先搜索. 由于从头开始的步数必然是最小的,因此,先 ...

  9. LeetCode 45. 跳跃游戏 II(贪心/BFS,难)

    文章目录 1. 题目 2. 解题 2.1 贪心 2.2 BFS 1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的 ...

最新文章

  1. Python命令行参数学习
  2. c bool 类型检查_C语言和C+的区别是什么?8个点通俗易懂的告诉你!
  3. mongoDB条件操作符
  4. Python 重写父类方法
  5. Centos6.5_x86_64 编译安装Subversion-1.8.5
  6. 到底什么是API经济
  7. 嗨淘V12刷任务点赞系统源码手动派单版本
  8. 双十一快到了,快递却不干了?
  9. .set伪指令(mips)
  10. C#将Access数据库导出为JSON
  11. 批量删除Cookie(实用)
  12. SSIS实践入门1:我的第一个SSIS程序开发
  13. 2011年11月份第二周51Aspx源码发布详情
  14. java百度地图离线开发_【“零起点”--百度地图手机SDK】如何使用离线地图?
  15. java矩形排样_优化排样(板材矩形一刀切算法)
  16. kaldi 语音识别 lattice-free MMI声学训练
  17. SpringBoot项目运行时出现A cookie header was received警告问题
  18. C#丨DataGridView控件获取选中行的某一列的值
  19. Revit API之BoundingBoxXYZ的用法和剖面框(Section Box)
  20. python之函数用法isupper()

热门文章

  1. 图书管理系统c++_校园图书系统写后感
  2. python爬虫-爬取今日头条(图集)
  3. EOJ_1102_任务调度问题
  4. php图片变成代码怎么解决,一段图片处理代码PHP代码转C#代码,该怎么解决
  5. emlog充值插件_常用十大必备Emlog插件
  6. __stdcall和__cdecl的区别
  7. VC批量拷贝,移动,删除文件---SHFileOperation
  8. C语言程序设计 | 扫雷游戏
  9. MongoDB可视化工具--Robo 3T 使用教程
  10. 一道非常经典C++面试题|大厂面试