我们可以将山脉地图看成一个二维网格,每个格子代表一个节点,相邻(上、下、左、右)格子之间有边相连。由于每步移动代价相同(均为 1),并且我们要找从山底到山峰的最少步数,最合适的算法是 广度优先搜索(BFS)。
具体步骤如下:
start(高度为 0 的唯一坐标)和山峰终点 target(最高高度的唯一坐标)。start 入队,并用一个与地图同型的布尔数组 vis 记录访问状态。一名登山员正在一座山的二维地图上寻找从山底到山峰的最短路线。地图用一个二维数组 mountainMap 表示,其中 mountainMap[x][y] 表示坐标 (x,y) 处的高度。
高度为 0 的坐标称为山底,高度最大的坐标称为山峰。地图保证山底和山峰分别恰好只有一个坐标,且山峰高度大于 0。山底不一定位于地图边界。
登山员每一步可以向上、下、左、右四个方向移动一格。他的攀爬能力值为 climbAbility。设当前所在位置的高度为 h,下一步移动到的相邻位置高度为 h′,则移动规则如下:
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册