Leetcode-n皇后
Leetcode-n皇后
题目描述
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
n 皇后问题 研究的是如何将 n
个皇后放置在 n×n
的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n
,返回所有不同的 n
皇后问题 的解决方案。
每一种解法包含一个不同的 n 皇后问题
的棋子放置方案,该方案中 'Q'
和 '.'
分别代表了皇后和空位。
示例

输入:n = 4
输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
解释:如上图所示,4 皇后问题存在两个不同的解法。
1 <= n <= 9
思路
经典的回溯问题。
定义数组Q存储已经放皇后的位置\((i, Q[i])\)
根据row进行回溯,判断皇后放在\([1,n]\) col是否有效,执行路径如下:

AC代码
1 | class Solution { |
复杂度分析
- 时间复杂度:\(O(n!)\)。搜索树中至多有 \(O(n!)\) 个叶子。
- 空间复杂度:O(n)。返回值的空间不计入。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XcloveHsy's Blog!