LeetCode 1197. 进击的骑士(BFS)
文章目录
- 1. 题目
- 2. 解题
1. 题目
一个坐标可以从 -infinity 延伸到 +infinity 的 无限大的 棋盘上,你的 骑士 驻扎在坐标为 [0, 0] 的方格里。
骑士的走法和中国象棋中的马相似,走 “日” 字:即先向左(或右)走 1 格,再向上(或下)走 2 格;或先向左(或右)走 2 格,再向上(或下)走 1 格。
每次移动,他都可以按图示八个方向之一前进。
现在,骑士需要前去征服坐标为 [x, y] 的部落,请你为他规划路线。
最后返回所需的最小移动次数即可。本题确保答案是一定存在的。
示例 1:
输入:x = 2, y = 1
输出:1
解释:[0, 0] → [2, 1]示例 2:
输入:x = 5, y = 5
输出:4
解释:[0, 0] → [2, 1] → [4, 2] → [3, 4] → [5, 5]提示:
|x| + |y| <= 300
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-knight-moves
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
class Solution {public:int minKnightMoves(int x, int y) {vector<vector<int>> dir = {{2, 1},{2,-1},{-2,1},{-2,-1},{1,2},{1,-2},{-1,2},{-1,-2}};x = abs(x), y = abs(y);//对称的,变成正的int m = x+20, n = y+20;//放大一点vector<vector<bool>> visited(m, vector<bool>(n,false));x += 10, y += 10;//偏移10个单位,保证边界的上情况能够覆盖queue<vector<int>> q;q.push({10,10});//起点visited[10][10] = true;int step = 0, size, i, j, k, ni, nj;while(!q.empty()){size = q.size();while(size--){i = q.front()[0];j = q.front()[1];if(i==x && j==y)return step;q.pop();for(k = 0; k < 8; k++){ni = i + dir[k][0];nj = j + dir[k][1];if(ni>=0 && ni<m && nj>=0 && nj<n && !visited[ni][nj]){q.push({ni,nj});visited[ni][nj] = true;}}}step++;}return -1;}
};
296 ms 34.4 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 1197. 进击的骑士(BFS)相关推荐
- Leetcode 1197:进击的骑士(超详细的解法!!!)
一个坐标可以从 -infinity 延伸到 +infinity 的 无限大的 棋盘上,你的 骑士 驻扎在坐标为 [0, 0] 的方格里. 骑士的走法和中国象棋中的马相似,走 "日" ...
- LeetCode 490. 迷宫(BFS/DFS)
文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 由空地和墙组成的迷宫中有一个球. 球可以向上下左右四个方向滚动,但在遇到墙壁前不会停止滚动. 当球停下时,可以选择下一个方 ...
- LeetCode 1162. 地图分析(BFS)
1. 题目 你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了.其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域 ...
- bzoj1671 Knights of Ni 骑士 BFS
Description 贝茜遇到了一件很麻烦的事:她无意中闯入了森林里的一座城堡,如果她想回家,就必须穿过这片由骑士们守护着的森林.为了能安全地离开,贝茜不得不按照骑士们的要求,在森林寻找一种特殊的灌 ...
- LeetCode 1609 奇偶树(BFS)
1609. 奇偶树https://leetcode-cn.com/problems/even-odd-tree/ 如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 : 二叉树根节点所在层下标为 0 ...
- 2021-08-06 leetcode每日一题 BFS+状态压缩,无向图的
访问所有节点的最短路径 存在一个由 n 个节点组成的无向连通图,图中的节点按从 0 到 n - 1 编号. 给你一个数组 graph 表示这个图.其中,graph[i] 是一个列表,由所有与节点 i ...
- leetcode算法题--骑士拨号器
原题链接:https://leetcode-cn.com/problems/knight-dialer/ 方法一: 这题是基于"马"在棋盘上的概率,所以我们就按照"马&q ...
- leetcode算法题--骑士在棋盘上的概率★
原题链接:https://leetcode-cn.com/problems/knight-probability-in-chessboard/ 动态规划,这种题目的想法都是逆向思维,题目问从一个点出发 ...
- LeetCode 700题 题解答案集合 Python
2019.5.12更新至题号796,目前共有265题. 2019.5.26更新至题号72, 目前共有347题. 2019.6.16更新至题号70,目前共有382题. 2019.7.7更新至题号5120 ...
最新文章
- HTML的base href = “” /
- Oracle Profile 使用详解
- 关于installshield安装界面上installshield字样的删除问题
- 8位可控加减法器_自主可控:QTouch在军工道系统上的应用
- 在线斯诺克html5,用HTML 5打造斯诺克桌球俱乐部
- 北京中信银行总行地址_中信银行拉萨分行举行“存款保险标识”启用和存款保险条例宣传活动...
- 机器学习-KMeans聚类 K值以及初始类簇中心点的选取
- 计算机设计大赛作品评语,第九届大学生短片大赛获奖作品评语
- JavaScript内存那点事
- AngularJs ngList、ngRepeat、ngModelOptions
- linux自带的cpu监测工具,Linux CPU实时系统监控工具mpstat
- 搭建elasticsearch可视化插件
- qq视频转码失败怎么办_视频里提取音频的几种方法
- ubuntu12.04 如何设置wiznote到快捷启动栏
- kafka数据保存时间问题与kafka的性能测试
- CMD 隐藏窗口运行
- 克罗内克积Kronecker
- 配置办公室无线路由实现ip统一具体方式
- 接入Apple Pay流程
- Android面试必过——Android常见的问题
热门文章
- python中的文件操作
- Zookeeper集群角色分配原理
- 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用
- memcpy,strcpy,strncpy
- 太原理工大学c语言课程设计报告,[太原理工大学C语言实验报告.doc
- input子系统基础之按键5——按键驱动
- JAVA实现概率计算(数字不同范围按照不同几率产生随机数)
- JavaWeb无限级分销结构分析
- Linux下精准踢掉登录用户-pkill命令
- Node.js mimimn图片批量下载爬虫 1.00