4034. Minimum Bishop Moves to Reach Target
Description
There is an 8 x 8 empty chessboard with 1-indexed rows and columns.
You are given an array source = [sr, sc] representing the starting position of a bishop, and an array target = [tr, tc] representing the target position.
In one move, the bishop travels one or more squares along a single diagonal direction, staying within the board.
Return the minimum number of moves for the bishop to land exactly on target. If it can never reach target, return -1.
Β
Example 1:
Input: source = [8,1], target = [1,8]
Output: 1
Explanation:
A single diagonal move takes the bishop straight from (8, 1) to (1, 8).
Example 2:
Input: source = [4,2], target = [1,3]
Output: 2
Explanation:
The bishop moves from (4, 2) to (3, 1), then from (3, 1) to (1, 3), reaching the target in 2 moves.
Example 3:
Input: source = [1,1], target = [3,4]
Output: -1
Explanation:
No matter how many diagonal moves it makes, the bishop starting at (1, 1) can never land on (3, 4). Thus, the answer is -1.
Β
Constraints:βββββββ
source.length == target.length == 21 <= sr, sc, tr, tc <= 8source != target
Solutions
Solution 1: Case Analysis
A bishop only moves along diagonals, and each move changes the row and the column by the same amount, so \((r + c) \bmod 2\) never changes. In other words, the bishop can only stand on squares of the same color as its starting square. If \((sr + sc)\) and \((tr + tc)\) have different parities, the bishop can never reach the target, so we return \(-1\).
Otherwise, if the source and the target lie on the same diagonal, i.e., \(|sr - tr| = |sc - tc|\), a single move is enough, so we return \(1\).
In all remaining cases, the two squares share the same color but are not on a common diagonal. Since \(\textit{source} \neq \textit{target}\) is guaranteed and any two same-colored squares on an \(8 \times 8\) board can be joined through some intermediate square, the answer is \(2\).
The time complexity is \(O(1)\), and the space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
1 2 3 4 5 6 7 8 9 10 11 | |

