我们可以将山脉地图看成一个二维网格,每个格子代表一个节点,相邻(上、下、左、右)格子之间有边相连。由于每步移动代价相同(均为 1),并且我们要找从山底到山峰的最少步数,最合适的算法是 广度优先搜索(BFS)。
具体步骤如下:
start(高度为 0 的唯一坐标)和山峰终点 target(最高高度的唯一坐标)。start 入队,并用一个与地图同型的布尔数组 vis 记录访问状态。给定一张二维山地地图 mountainMap,其中第 x 行第 y 列的元素 mountainMap[x][y] 表示坐标 (x,y) 处的海拔高度。地图中恰好有一个高度为 0 的坐标点,称为山底;也恰好有一个全图高度最大的坐标点,称为山峰。登山员从山底出发,目标是到达山峰。
登山员每一步只能从当前坐标向上、下、左、右四个方向之一移动一格。设当前所在坐标的高度为 h,准备移动到的相邻坐标高度为 h′。攀爬能力 climbAbility 限制了单步允许跨越的高度差:
也就是说,相邻两步之间的高度差绝对值不能超过 climbAbility。
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册