题目解析
本题需要我们找到一个位置:
- 所有马都能跳到该位置
- 所有马跳到该位置的步数之和最小
返回该位置的最小步数和。
另外,每个马还有等级K,决定了该马能跳的步数。
因此,我们只需要遍历每一匹马,并基于BFS策略,让该马跳K步,在跳的过程中,我们记录下该马跳过的位置,马第一次跳到某位置,即为该马到达该位置的最小步数,后续该马再次跳到该位置,则非到达该位置的最小步数。
具体解题时,我们可以定义:
- stepMap:一个m行n列整型矩阵,矩阵每个元素初始值为0,stepMap[i][j]表示所有能跳到(i, j)位置的马所花费的最小步数之和
- reach:一个Set集合,用于记录所有马都能跳到的公共位置,初始时该集合记录棋盘所有位置,即认为所有马可以跳到所有位置,所有位置都是公共位置
然后,基于每一匹马进行BFS,在BFS前定义:
- 一个Set集合vis,用于记录当前马能跳到的位置
- 马的位置信息 [x, y, step],表示马到达棋盘(x,y)位置,花费了