51 N-Queens
51. N-Queens
1. Question
The n-queens puzzle is the problem of placing n _queens on an _n × _n _chessboard such that no two queens attack each other.
Given an integern, return all distinct solutions to then-queens puzzle.
Each solution contains a distinct board configuration of then-queens' placement, where'Q'
and'.'
both indicate a queen and an empty space respectively.
Example:
2. Implementation
(1) Backtracking
思路: 我们对每一行的所有列都尝试摆放queen, 通过三个boolean数组cols, diagnol1, diagnol2分别判断在当前位置的同一列,主对角线和副对角线的位置上是否已经有queen。比较tricky的地方是主对角线和副对角线上怎么判断是否已经有Queen摆放,通过观察我们发现,同一个主对角线上的数的位置都等于 row - col, 为了避免负数出现,我们加上n,即row - col + n, 副对角线上都等于row + col
3. Time & Space Complexity
时间复杂度O(n * 2 ^ n), 每一行里只能放一个queen, 每一列只有放和不放两种可能,所以n * 2 ^ n,空间复杂度O(n)
Last updated
Was this helpful?