1345. 跳跃游戏 IV
Powered by:NEFU AB-IN
Link
文章目录
- 1345. 跳跃游戏 IV
- 题意
- 思路
- 代码
1345. 跳跃游戏 IV
题意
略
思路
先用哈希表将每个相同元素的位置记下来,每个形成一个链表,再进行BFS,入队的话,就让前一个、后一个、链表的元素入队即可
其中减少复杂度的操作,就是当遍历完自己的链表后,将其从哈希表中删去,因为再遍历肯定是不优的代码
/* * @Author: NEFU AB-IN * @Date: 2022-09-05 21:10:01 * @FilePath: \LeetCode\1345\1345.cpp * @LastEditTime: 2022-09-06 14:06:02 */ #include <bits/stdc++.h> using namespace std;// --------------------- #define N n + 100 #define SZ(X) ((int)(X).size()) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII;// #undef N // const int N = 1e5 + 10;// #undef int;static int IOS = []() {ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);return 0; }();class Solution {public:int minJumps(vector<int> &arr){int n = SZ(arr);queue<PII> q;unordered_map<int, vector<int>> g;for (int i = 0; i < n; ++i){g[arr[i]].push_back(i);}vector<int> st(n);st[0] = 1;q.push({0, 0});while (SZ(q)){auto t = q.front();q.pop();int id = t.first, cnt = t.second;if (id == n - 1){return cnt;}if (g.count(arr[id])){for (auto v : g[arr[id]]){if (!st[v])q.push({v, cnt + 1}), st[v] = 1;}g.erase(arr[id]); // 遍历完一遍了,直接就可以删掉了}if (id >= 1 && !st[id - 1])q.push({id - 1, cnt + 1}), st[id - 1] = 1;if (id <= n - 1 && !st[id + 1])q.push({id + 1, cnt + 1}), st[id + 1] = 1;}return 0;} };// ---------------------signed main() {Solution solution;return 0; }
1345. 跳跃游戏 IV相关推荐
- leetcode 1345. Jump Game IV | 1345. 跳跃游戏 IV(BFS)
题目 https://leetcode.com/problems/jump-game-iv/ 题解 好久没做 hard 了,今天时间多,挑战一下.用 lqy 同学的话说,这题叫做 "苦难题& ...
- Leetcode 1345 跳跃游戏 IV
题目 给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0). 每一步,你可以从下标 i 跳到下标: i + 1 满足:i + 1 < arr.length i - 1 满足:i ...
- 1345.跳跃游戏IV-LeetCode
难度:困难 目录 一.问题描述 二.解题思想 三.解题 1.判断极端情况 2.代码实现 四.总结 一.问题描述 这里直接采用的是leetcode上面的问题描述. 给你一个整数数组 arr ,你一开始在 ...
- leetcode:跳跃游戏 IV
dijk 22/32 class Solution {public:int minJumps(vector<int>& arr) {// dijk? 最短路径?if(arr.siz ...
- 2022.01.21 - 215.跳跃游戏 IV
文章目录 1. 题目 2. 思路 (1) BFS 3. 代码 1. 题目 2. 思路 (1) BFS 首先统计每个值出现的所有位置,然后从头开始广度优先搜索. 由于从头开始的步数必然是最小的,因此,先 ...
- LeetCode 1696. 跳跃游戏 VI(优先队列 / 单调队列)
文章目录 1. 题目 2. 解题 2.1 贪心错误解 2.2 优先队列/单调队列 1. 题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k . 一开始你在下标 0 处.每一步,你最多可 ...
- LeetCode 1306. 跳跃游戏 III(广度优先搜索BFS)
1. 题目 这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处. 当你位于下标 i 处时,你可以跳到 i + arr[i] 或者 i - arr[i]. 请你判断自己是否能够 ...
- LeetCode 1340. 跳跃游戏 V(DP)
1. 题目 给你一个整数数组 arr 和一个整数 d .每一步你可以从下标 i 跳到: i + x ,其中 i + x < arr.length 且 0 < x <= d . i - ...
- LeetCode 45. 跳跃游戏 II(贪心/BFS,难)
文章目录 1. 题目 2. 解题 2.1 贪心 2.2 BFS 1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的 ...
最新文章
- 计算机从网络上启动,如何设置计算机以从网络驱动器启动
- php的udp数据传输,python实现udp数据报传输的方法
- React 深度学习:ReactFiberLazyComponent
- HDFS重复上传文件将会覆盖原文件
- 商汤2021春季校园招聘正式启动!“春招百晓生”系列空宣强势来袭
- android自动关闭uvc相机服务,android 调用系统相机崩溃的解决方案
- MUI组件:弹出层组件 - 案例篇
- java回合制武侠手游_App Store 上的“群侠传-怀旧开放武侠RPG回合制手游”
- 【学神】1-16 网络管理相关命令
- spark在集群上运行
- Advanced User Administration
- 生成不同尺寸dimen的xml文件以及文件夹
- 服务器更新维护尚未全部完成,03月07日全部服务器更新维护公告
- 超星考试浏览器_超星浏览器官方下载
- android svg按钮图标下载,安卓android中小图标使用优化(svg矢量图与iconfiy)
- 树莓派4B改装RC玩具车玩转opencv系列教程(一)树莓派基础入门篇------Hello Raspberry Pi OS(Rasbian )!
- 韩语在线翻译图片识别_最强文字识别APP
- Windows10怎么让某个软件禁止联网?设置软件禁止联网的方法
- 纺织品行业——瑞士蓝标Bluesign认证
- 2021年工业软件行业研究报告
热门文章
- AutoIt v3.3.14.2 汉化最新版
- SP2限制连接数补丁!最新版本2.11a
- Android的Logcat命令详解:翻译Enabling logcat Logging
- 四种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法,下划线命名法
- JavaScript 中 let 的使用
- SQUIRREL语言
- 微软官方Windows 7 USB/DVD Download Tool下载
- 简单的STM32蓝牙遥控小车完整项目及资料分享,超全
- 在html中轮播图怎么做,HTML轮播图怎么做
- mysql 慢_mysql 大事物commit慢造成全库堵塞问题