-
Notifications
You must be signed in to change notification settings - Fork 65
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
128 changed files
with
96 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
>精简版答案示例,摘自本题的leetCode官方题解 | ||
**051. NQueens** | ||
--- | ||
[https://leetcode-cn.com/problems/n-queens/](https://leetcode-cn.com/problems/n-queens/) | ||
|
||
方法一:回溯法 | ||
```java | ||
|
||
public class Solution { | ||
public List<List<String>> solveNQueens(int n) { | ||
// 构造棋盘 | ||
char[][] board = new char[n][n]; | ||
// 初始化棋盘所有的棋子 | ||
for(int i = 0; i < n; i++) | ||
for(int j = 0; j < n; j++) | ||
board[i][j] = '.'; | ||
// 初始化结果集 | ||
List<List<String>> resultList = new ArrayList<List<String>>(); | ||
// 从第0列开始搜索所有结果,保存到resultList结果集中 | ||
search(board, 0, resultList); | ||
|
||
return resultList; | ||
} | ||
|
||
/** | ||
* 递归获取所有的结果 | ||
* @param board 棋盘 | ||
* @param column 所在列 | ||
* @param resultList 最终结果集 | ||
*/ | ||
public void search(char[][] board, int column, List<List<String>> resultList) { | ||
// 如果最后一列已经遍历完,则将棋盘保存,添加到最终结果集中并返回 | ||
if(column == board.length) { | ||
resultList.add(construct(board)); | ||
return; | ||
} | ||
|
||
// 寻找第column列的哪一行适合放置皇后的位置 | ||
for(int i = 0; i < board.length; i++) { | ||
// 如果在第i行,第column列添加皇后能够满足棋盘的0~column列不冲突 | ||
if(validate(board, i, column)) { | ||
// 第i行,第column列放置一个皇后 | ||
board[i][column] = 'Q'; | ||
// 继续探索第column+1列适合放置皇后的位置 | ||
search(board, column + 1, resultList); | ||
// 重置column列的结果,继续探索其他位置的可能性 | ||
board[i][column] = '.'; | ||
} | ||
} | ||
} | ||
|
||
/** | ||
* 验证将皇后放在第y列,第x行,是否可行 | ||
* 由于棋盘的0~y-1列的皇后位置都是有效的, | ||
* 所以验证方式为:让0~y-1列的皇后与当前的皇后比,若都不存在冲突,则有效 | ||
* 冲突检测,正负对角线(测试斜率是否为正负一),是否同一行(不可能同列) | ||
* @param board 棋盘 | ||
* @param x 所在行 | ||
* @param y 所在列 | ||
* @return 位置是否有效 | ||
*/ | ||
public boolean validate(char[][] board, int x, int y) { | ||
// 从第i行开始遍历 | ||
for(int i = 0; i < board.length; i++) { | ||
// 从第j列开始遍历 | ||
for(int j = 0; j < y; j++) { | ||
// 如果此位置为皇后,且 | ||
if(board[i][j] == 'Q' && (x - i == y - j || x - i == j - y || x == i)) | ||
return false; | ||
} | ||
} | ||
|
||
return true; | ||
} | ||
|
||
// 产生了一个结果集list序列 | ||
public List<String> construct(char[][] board) { | ||
List<String> result = new LinkedList<String>(); | ||
for(int i = 0; i < board.length; i++) { | ||
String s = new String(board[i]); | ||
result.add(s); | ||
} | ||
return result; | ||
} | ||
} | ||
|
||
``` | ||
|
||
--- | ||
|
||
|
||
**参考资料** | ||
|
||
* 网友推荐题解: | ||
[https://leetcode.com/problems/n-queens/discuss/19805/My-easy-understanding-Java-Solution](https://leetcode.com/problems/n-queens/discuss/19805/My-easy-understanding-Java-Solution) |
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified
0
algorithm/leetcode/102-BinaryTreeLevelOrderTraversal/SpecialYang.md
100644 → 100755
Empty file.
Empty file modified
0
algorithm/leetcode/102-BinaryTreeLevelOrderTraversal/official.md
100644 → 100755
Empty file.
Empty file.
Empty file modified
0
algorithm/leetcode/122-bestTimeToBuyAndSellStockII/SpecialYang.md
100644 → 100755
Empty file.
Empty file modified
0
algorithm/leetcode/122-bestTimeToBuyAndSellStockII/bigablecat.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified
0
algorithm/leetcode/236-lowestCommonAncestorOfABinaryTree/BambooYH.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/ChainOfResponsibilityPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/CommandPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/InterpreterPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/IteratorPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/MediatorPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/MementoPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/NullObjectPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/ObserverPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/StatePattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/StrategyPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/TemplatePattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/BehavioralPattern/VisitorPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/CreationPattern/AbstractFactoryPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/CreationPattern/BuilderPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/CreationPattern/FactoryPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/CreationPattern/PrototypePattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/CreationPattern/SingletonPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/StructuralPattern/AdapterPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/StructuralPattern/BridgePattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/StructuralPattern/CompositePattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/StructuralPattern/DecoratorPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/StructuralPattern/FacadePattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/StructuralPattern/FilterCriteriaPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/StructuralPattern/FlyweightPattern.md
100644 → 100755
Empty file.
Empty file modified
0
contents/UMLClassDiagramAndDesignPattern/StructuralPattern/ProxyPattern.md
100644 → 100755
Empty file.
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.