N皇后 II

tobegold574 Lv5

N皇后 II

做题过程

和N皇后思路一模一样,甚至还不需要构建棋盘,简单了很多,还是N皇后的思路,直接手撕了。

算法概述

原题

时间和空间复杂度都与N皇后一致,N皇后也不会把棋盘纳入复杂度考虑。

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
int res=0;

public int totalNQueens(int n) {
int cols[]=new int[n];
dfs(cols,n,0);
return res;
}

private void dfs(int[] cols,int n,int row){
if(row==n){
res+=1;
return;
}
for(int i=0;i!=n;++i){
if(isConflicted(cols,i,row)) continue;
cols[row]=i;
dfs(cols,n,row+1);
}
}

private boolean isConflicted(int[] cols,int i,int row){
for(int j=0;j!=row;++j){
// 这里用j,要避免参数冲突
if((cols[j]==i)||Math.abs(cols[j]-i)==row-j) return true;
}
return false;
}
}

总结

这种题做了两三次就可以手撕了,因为本身思路其实不难理解。

  • Title: N皇后 II
  • Author: tobegold574
  • Created at : 2024-12-02 12:49:19
  • Updated at : 2024-12-02 13:32:52
  • Link: https://tobegold574.me/2024/12/02/N皇后-II/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments