ID | Title | Difficulty | |
---|---|---|---|
Loading... |
52. N-Queens II
Hard
LeetCode
Backtracking
Problem
The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other.
Given an integer n, return the number of distinct solutions to the n-queens puzzle.
Example 1:
Input: n = 4
Output: 2
Explanation: There are two distinct solutions to the 4-queens puzzle as shown.
Example 2:
Input: n = 1
Output: 1
Code
class Solution {
int res = 0;
public int totalNQueens(int n) {
helper(new int[n], 0);
return res;
}
private void helper(int[] queens, int pos){
if(pos == queens.length){
res++;
return;
}
for(int i = 0; i < queens.length; i++){
queens[pos] = i;
if(isValid(queens, pos)){
helper(queens, pos + 1);
}
}
}
private boolean isValid(int[] queens, int pos){
for(int i = 0; i < pos; i++){
if(queens[i] == queens[pos]){
return false;
}
if(Math.abs(queens[i] - queens[pos]) == Math.abs(i - pos)){
return false;
}
}
return true;
}
}
time: O(N!) space: O(N)
按 <- 键看上一题!
51. N-Queens
按 -> 键看下一题!
53. Maximum Subarray