[go: nahoru, domu]

Skip to content

Commit

Permalink
N皇后
Browse files Browse the repository at this point in the history
  • Loading branch information
melody-l committed Dec 22, 2018
1 parent 5224fcf commit 2aac3f3
Show file tree
Hide file tree
Showing 128 changed files with 96 additions and 0 deletions.
Empty file modified .gitignore
100644 → 100755
Empty file.
Empty file modified README.md
100644 → 100755
Empty file.
Empty file modified algorithm/README.md
100644 → 100755
Empty file.
Empty file modified algorithm/daily.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/001-twoSum/hatrick.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/001-twoSum/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/015-threeSum/hatrick.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/015-threeSum/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/020-validParentheses/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/024-swapNodesInPairs/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/025-reverseNodesInKGroup/bigablecat.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/025-reverseNodesInKGroup/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/036-ValidSudoku/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/037-SudokuSolver/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/050-powxN/bigablecat.md
100644 → 100755
Empty file.
96 changes: 96 additions & 0 deletions algorithm/leetcode/051-NQueens/melody-l.md
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 modified algorithm/leetcode/051-NQueens/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/053-maximumSubarray/BambooYH.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/053-maximumSubarray/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/069-SqrtX/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/098-validateBinarySearchTree/BambooYH.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified algorithm/leetcode/104-MaximumDepthOfBinaryTree/official.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified algorithm/leetcode/141-linkedListCycle/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/142-linkedListCycleII/bigablecat.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/169-majorityElement/SpecialYang.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/169-majorityElement/bigablecat.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/206-reverseLinkedList/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/208-implementTriePrefixTree/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/212-wordSearchII/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/215-KthLargestElementInAnArray/BambooYH.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/225-implementStackUsingQueues/hatrick.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/225-implementStackUsingQueues/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/232-implementQueueUsingStacks/hatrick.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/232-implementQueueUsingStacks/official.md
100644 → 100755
Empty file.
Empty file.
Empty file modified algorithm/leetcode/239-slidingWindowMaximum/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/242-ValidAnagram/bigablecat.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/295-FindMedianFromDataStream/BambooYH.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/367-ValidPerfectSquare/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/455-AssignCookies/SpecialYang.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/455-AssignCookies/bigablecat.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/692-TopKFrequentWords/bigablecat.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/703-KthLargestElementInAStream/BambooYH.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/844-BackspaceStringCompare/BambooYH.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/844-BackspaceStringCompare/bigablecat.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/860-lemonadeChange/BambooYH.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/860-lemonadeChange/SpecialYang.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/860-lemonadeChange/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/874-walkingRobotSimulation/SpecialYang.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/874-walkingRobotSimulation/official.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/954-ArrayOfDoubledPairs/bigablecat.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/sample/concise.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/sample/concise.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified algorithm/leetcode/sample/full.md
100644 → 100755
Empty file.
Empty file modified algorithm/leetcode/sample/full.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified algorithm/剑指Offer/README.md
100644 → 100755
Empty file.
Empty file modified contents/3_Java基础.md
100644 → 100755
Empty file.
Empty file modified contents/4_JavaWeb.md
100644 → 100755
Empty file.
Empty file modified contents/5_UML类图与设计模式.md
100644 → 100755
Empty file.
Empty file modified contents/CLanguageBase/CPlusPlusRelated.md
100644 → 100755
Empty file.
Empty file modified contents/CLanguageBase/ConstructorAndDestructor.md
100644 → 100755
Empty file.
Empty file modified contents/CLanguageBase/Other.md
100644 → 100755
Empty file.
Empty file modified contents/ComputerBasicKnowledge/Algorithm.md
100644 → 100755
Empty file.
Empty file modified contents/ComputerBasicKnowledge/BigdateProcessing.md
100644 → 100755
Empty file.
Empty file modified contents/ComputerBasicKnowledge/ComputerNetworking.md
100644 → 100755
Empty file.
Empty file modified contents/ComputerBasicKnowledge/DataStructures.md
100644 → 100755
Empty file.
Empty file modified contents/ComputerBasicKnowledge/Database.md
100644 → 100755
Empty file.
Empty file modified contents/ComputerBasicKnowledge/OperatingSystem.md
100644 → 100755
Empty file.
Empty file modified contents/JavaBase/Collections.md
100644 → 100755
Empty file.
Empty file modified contents/JavaBase/Exceptions.md
100644 → 100755
Empty file.
Empty file modified contents/JavaBase/OOPFutures.md
100644 → 100755
Empty file.
Empty file modified contents/JavaBase/Other.md
100644 → 100755
Empty file.
Empty file modified contents/JavaSenior/IO.md
100644 → 100755
Empty file.
Empty file modified contents/JavaSenior/JVMUnderlyingTechnology.md
100644 → 100755
Empty file.
Empty file modified contents/JavaSenior/MultiThreads.md
100644 → 100755
Empty file.
Empty file modified contents/JavaSenior/Other.md
100644 → 100755
Empty file.
Empty file modified contents/JavaSenior/hash.md
100644 → 100755
Empty file.
Empty file modified contents/JavaSenior/java-NIO-BIO-AIO.md
100644 → 100755
Empty file.
Empty file modified contents/JavaWeb/CodingProblem.md
100644 → 100755
Empty file.
Empty file modified contents/JavaWeb/DynamicProxy.md
100644 → 100755
Empty file.
Empty file modified contents/JavaWeb/Http.md
100644 → 100755
Empty file.
Empty file modified contents/JavaWeb/MVCFramework.md
100644 → 100755
Empty file.
Empty file modified contents/JavaWeb/Others.md
100644 → 100755
Empty file.
Empty file modified contents/JavaWeb/SSM.md
100644 → 100755
Empty file.
Empty file modified contents/JavaWeb/ServiceContainer.md
100644 → 100755
Empty file.
Empty file modified contents/JavaWeb/Servlet.md
100644 → 100755
Empty file.
Empty file modified contents/JavaWeb/WebSecurity.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.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified contents/UMLClassDiagramAndDesignPattern/UMLClassDiagram.md
100644 → 100755
Empty file.
Empty file modified contents/img/Aggregation.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified contents/img/Association.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified contents/img/Composition.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified contents/img/Dependency.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified contents/img/Generalization.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified contents/img/Realization.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified java/Thread.md
100644 → 100755
Empty file.
Empty file modified java/micro-service.md
100644 → 100755
Empty file.
Empty file modified java/netty.md
100644 → 100755
Empty file.
Empty file modified java/overview.md
100644 → 100755
Empty file.
Empty file modified java/spring.md
100644 → 100755
Empty file.

0 comments on commit 2aac3f3

Please sign in to comment.