leetcode 51 . N-Queens
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 all distinct solutions to the n-queens puzzle. You may return the answer in any order.
Each solution contains a distinct board configuration of the n-queens' placement, where 'Q'
and '.'
both indicate a queen and an empty space, respectively.
Example 1:
Input: n = 4 Output: [[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] Explanation: There exist two distinct solutions to the 4-queens puzzle as shown above
Example 2:
Input: n = 1 Output: [["Q"]]
Constraints:
1 <= n <= 9
public class Solution {
public boolean isMatch(String s, String p) {
return match(s, p, 0, 0);
}
private boolean match(String s, String p, int s1, int s2) {
if (s1 == s.length() && s2 == p.length()) {
return true;
}
if (s2 == p.length()) {
return false;
}
if (s2 == p.length() - 1 || p.charAt(s2 + 1) != '*') {
//normal check
if (s1 < s.length() && (p.charAt(s2) == '.' || s.charAt(s1) == p.charAt(s2))) {
return match(s, p, s1 + 1, s2 + 1);
}
else {
return false;
}
}
else {
// * as zero
if (match(s, p, s1, s2 + 2)) {
return true;
}
// * as not zero
if (s1 < s.length() && ((p.charAt(s2) == '.' ||s.charAt(s1) == p.charAt(s2)) && match(s, p, s1 + 1, s2))) {
return true;
}
}
return false;
}
}
Comments
Post a Comment