原题:51. N-Queens
思考
这道题主要用到 回溯 的思想解题。
假设第i行Q占据图中的位置,则她的四条攻击路径如图所示。
容易得出:路径3(撇)经过的单元格都有y+x=c1
,路径4(捺)经过的单元格都有y-x=c2
,其中c1/c2是一个常数。
- 由于我们逐行扫描,所以路径1必然不会冲突。
- 对于路径2,使用
col
标记已经占用的列 - 对于路径3,使用
xySum
标记已经被占用的撇 - 对于路径4,使用
xyDiff
标记已经占用的捺
最后回溯即可。
source code
1 | // Runtime: 88 ms, faster than 33.33% of JavaScript online submissions for N-Queens. |
test cases
1 | test("test1", () => { |