当前位置:网站首页>LeetCode 1654. 到家的最少跳跃次数 每日一题
LeetCode 1654. 到家的最少跳跃次数 每日一题
2022-07-07 15:32:00 【@小红花】
问题描述
有一只跳蚤的家在数轴上的位置 x 处。请你帮助它从位置 0 出发,到达它的家。
跳蚤跳跃的规则如下:
它可以 往前 跳恰好 a 个位置(即往右跳)。
它可以 往后 跳恰好 b 个位置(即往左跳)。
它不能 连续 往后跳 2 次。
它不能跳到任何 forbidden 数组中的位置。
跳蚤可以往前跳 超过 它的家的位置,但是它 不能跳到负整数 的位置。给你一个整数数组 forbidden ,其中 forbidden[i] 是跳蚤不能跳到的位置,同时给你整数 a, b 和 x ,请你返回跳蚤到家的最少跳跃次数。如果没有恰好到达 x 的可行方案,请你返回 -1 。
示例 1:
输入:forbidden = [14,4,18,1,15], a = 3, b = 15, x = 9
输出:3
解释:往前跳 3 次(0 -> 3 -> 6 -> 9),跳蚤就到家了。
示例 2:输入:forbidden = [8,3,16,6,12,20], a = 15, b = 13, x = 11
输出:-1
示例 3:输入:forbidden = [1,6,2,14,5,17,4], a = 16, b = 9, x = 7
输出:2
解释:往前跳一次(0 -> 16),然后往回跳一次(16 -> 7),跳蚤就到家了。
提示:
1 <= forbidden.length <= 1000
1 <= a, b, forbidden[i] <= 2000
0 <= x <= 2000
forbidden 中所有位置互不相同。
位置 x 不在 forbidden 中。来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-jumps-to-reach-home
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Java
class Solution {
public int minimumJumps(int[] forbidden, int a, int b, int x) {
//记录禁止到达的位置
Set<Integer> set = new HashSet<>();
for(int forbid : forbidden) set.add(forbid);
Queue<int[]> queue = new LinkedList<>();//当前位置,往回跳的次数
queue.offer(new int[]{0,0});
boolean[][] visible = new boolean[8000][2];
int ans = -1;
while(!queue.isEmpty()){
int size = queue.size();
ans++;
for(int i = 0;i < size;i++){
int[] t = queue.poll();
int position = t[0];
if(position == x) return ans;
int rollbackCount = t[1];
if(visible[position][rollbackCount]) continue;
visible[position][rollbackCount] = true;
//向前跳
if(position + a < 8000 && !set.contains(position + a)){
queue.offer(new int[]{position + a,0});
}
//向后跳
if(position - b >= 0 && !set.contains(position - b) && rollbackCount == 0){
queue.offer(new int[]{position - b,rollbackCount + 1});
}
}
}
return -1;
}
}
边栏推荐
- LeetCode 1155. 掷骰子的N种方法 每日一题
- Sqlserver2014+: create indexes while creating tables
- LeetCode 1986. 完成任务的最少工作时间段 每日一题
- Talk about the realization of authority control and transaction record function of SAP system
- Laravel changed the session from file saving to database saving
- Three. JS series (1): API structure diagram-1
- [designmode] proxy pattern
- Deep listening array deep listening watch
- 数据中台落地实施之法
- 【DesignMode】外观模式 (facade patterns)
猜你喜欢
pycharm 终端部启用虚拟环境
数据中台落地实施之法
Binary search tree (features)
Have fun | latest progress of "spacecraft program" activities
最新Android面试合集,android视频提取音频
[Android -- data storage] use SQLite to store data
[medical segmentation] attention Unet
面向接口编程
《产品经理必读:五种经典的创新思维模型》的读后感
The difference and working principle between compiler and interpreter
随机推荐
[designmode] template method pattern
JS modularization
DAPP defi NFT LP single and dual currency liquidity mining system development details and source code
Imitate the choice of enterprise wechat conference room
Geoserver2.18 series (5): connect to SQLSERVER database
低代码(lowcode)帮助运输公司增强供应链管理的4种方式
如何快速检查钢网开口面积比是否符合 IPC7525
在哪个期货公司开期货户最安全?
【DesignMode】代理模式(proxy pattern)
【DesignMode】模板方法模式(Template method pattern)
Opencv personal notes
os、sys、random标准库主要功能
字节跳动Android面试,知识点总结+面试题解析
Usage of config in laravel
null == undefined
Interface oriented programming
01tire+ chain forward star +dfs+ greedy exercise one
直接上干货,100%好评
Ray and OBB intersection detection
LeetCode 1696. 跳跃游戏 VI 每日一题