[分析] 做完N皇后第一题,这个就so easy~
public class Solution {
public int totalNQueens(int n) {
int[] rows = new int[n]; // rows[i] = j, means board[i][j] = Q
int[] cols = new int[n]; // cols[j] = i, means board[i][j] = Q
for (int i = 0; i < n; i++) {
rows[i] = -1;
cols[i] = -1;
}
return recur(n, 0, rows, cols);
}
public int recur(int n, int r, int[] rows, int[] cols) {
if (r == n) {
return 1;
}
int result = 0;
for (int j = 0; j < n; j++) {
if (cols[j] == -1 && verifyDiagnal(rows, r, j)) {
rows[r] = j;
cols[j] = r;
result += recur(n, r + 1, rows, cols);
rows[r] = -1;
cols[j] = -1;
}
}
return result;
}
public boolean verifyDiagnal (int[] rows, int r, int c) {
for (int i = 0; i < r; i++) {
if (r - i == Math.abs(c - rows[i]))
return false;
}
return true;
}
}
分享到:
相关推荐
137 | [Single Number II](https://leetcode.com/problems/single-number-ii/) | [C++](./C++/single-number-ii.cpp) [Python](./Python/single-number-ii.py) | _O(n)_ | _O(1)_ | Medium ||| 190 | [Reverse Bits]...
【描述】提到的"Tree"是指在LeetCode中的树形结构问题,这类问题涉及二叉树、N叉树等,要求开发者实现遍历、查找、插入和删除等操作。"Array"则涵盖了数组相关的题目,包括但不限于数组排序、查找、合并等。...
在解决LeetCode的问题时,还会遇到一些设计模式的应用,比如"Design HashMap"(设计哈希映射)和"Implement Stack using Queues"(用队列实现栈)。掌握设计模式可以帮助我们更好地组织代码,提高代码的可读性和复用...
LeetCode 是一个在线编程平台,它提供了大量的算法题目和实战练习,旨在帮助程序员提升技能,尤其是对于准备技术面试的人来说,LeetCode 是一个非常宝贵的资源。本压缩包文件 "leetCode-master" 很可能是包含了...
9. **回溯法(Backtracking)**:尝试所有可能的解决方案,如“N皇后问题”(N-Queens)。 10. **位操作(Bit Manipulation)**:利用位运算解决数学问题,如“只出现一次的数字”(Single Number)。 LeetCode-...
LeetCode、AlgoExpert、Educative等平台是广受欢迎的在线学习资源,它们提供了一系列的编程挑战和面试问题,帮助开发者提升在这些关键领域的技能。 首先,我们来看看一些主要的数据结构: 1. 链表(Linked List)...