Skip to content

Commit 6c075a2

Browse files
committed
Changed the structure
1 parent 8100e8c commit 6c075a2

23 files changed

+674
-518
lines changed

Diff for: clj/README.md

+43-25
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,44 @@
1-
# Summary
2-
3-
* [第一部分 基础算法](basic-part.md)
4-
* [线性表](linear-list/README.md)
5-
* [数组](linear-list/array.md)
6-
* [链表](linear-list/linked-list.md)
7-
* [字符串](string/README.md)
8-
* [栈和队列](stack-and-queue/README.md)
9-
* [栈](stack-and-queue/stack.md)
10-
* [队列](stack-and-queue/queue.md)
11-
* [二叉树](binary-tree/README.md)
12-
* [二叉树的遍历](binary-tree/traversal.md)
13-
* [二叉树的构建](binary-tree/construction.md)
14-
* [二叉查找树](binary-tree/bst.md)
15-
* [二叉树的递归](binary-tree/recursion.md)
16-
* [排序](sort/README.md)
17-
* [查找](search/README.md)
18-
* [暴力枚举法](brute-force/README.md)
19-
* [深度优先搜索](dfs/README.md)
20-
* [广度优先搜索](bfs/README.md)
21-
* [分治法](divide-and-conquer/README.md)
22-
* [贪心法](greedy/README.md)
23-
* [动态规划](dp/README.md)
24-
* [第一部分 高级算法](advanced-part.md)
25-
* [](graph/README.md)
1+
# 算法精粹——举一反三,抛弃题海战术
2+
3+
市场上讲解算法的书已经汗牛充栋,我为什么还要写这本书呢?主要原因是我对目前市场上的大部分算法书都不太满意。 本书有如下特色:
4+
5+
1. 每道题都有在线OJ支持。本书的所有题目,都可以在 [www.algohub.org](http://www.algohub.org) 上找到。这样的一大好处是,读者可以边看书,边实现自己的代码,然后提交到网站上验证自己的想法是否正确。
6+
2. 每道题都有完整的代码。市场上的大部分书,都会讲思路,但给出的代码都是片段,不是完整可编译的代码。本书每题都有完整的代码,且每个代码经过千锤百炼,保证可读性的前提下尽可能简短,方面读者在面试中能快速写出来。
7+
3. 每道题都有多种解法。本书的宗旨是,用尽可能少的题目,覆盖尽可能多的算法。本书中的的每道题都有多种解法,每种解法不是简单的小改进,而是完全不同的思路,力求举一反三,让读者触类旁通。
8+
4. 本书支持多种主流编程语言。目前支持 Java, C++, C#, Python, Ruby, JavaScript, Swift, Scala, Clojure, 将来还会支持更多编程语言。
9+
10+
# 内容目录
11+
12+
* [线性表](linear-list/README.md)
13+
* [数组](linear-list/array.md)
14+
* [链表](linear-list/linked-list.md)
15+
* [字符串](string/README.md)
16+
* [栈和队列](stack-and-queue/README.md)
17+
* [](stack-and-queue/stack.md)
18+
* [队列](stack-and-queue/queue.md)
19+
* [二叉树](binary-tree/README.md)
20+
* [二叉树的遍历](binary-tree/traversal.md)
21+
* [二叉树的构建](binary-tree/construction.md)
22+
* [二叉查找树](binary-tree/bst.md)
23+
* [二叉树的递归](binary-tree/recursion.md)
24+
* [排序](sort/README.md)
25+
* [查找](search/README.md)
26+
* [暴力枚举法](brute-force/README.md)
27+
* [深度优先搜索](dfs/README.md)
28+
* [广度优先搜索](bfs/README.md)
29+
* [分治法](divide-and-conquer/README.md)
30+
* [贪心法](greedy/README.md)
31+
* [动态规划](dp/README.md)
32+
* [](graph/README.md)
33+
34+
35+
# Community
36+
37+
QQ 群: 237669375
38+
39+
Github: <https://www.github.com/soulmachine/algorithm-essentials>
40+
41+
42+
## License
43+
Book License: [CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)
2644

Diff for: clj/SUMMARY.md

+21-23
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
11
# Summary
22

3-
* [第一部分 基础算法](basic-part.md)
4-
* [线性表](linear-list/README.md)
5-
* [数组](linear-list/array.md)
6-
* [链表](linear-list/linked-list.md)
7-
* [字符串](string/README.md)
8-
* [栈和队列](stack-and-queue/README.md)
9-
* [栈](stack-and-queue/stack.md)
10-
* [队列](stack-and-queue/queue.md)
11-
* [二叉树](binary-tree/README.md)
12-
* [二叉树的遍历](binary-tree/traversal.md)
13-
* [二叉树的构建](binary-tree/construction.md)
14-
* [二叉查找树](binary-tree/bst.md)
15-
* [二叉树的递归](binary-tree/recursion.md)
16-
* [排序](sort/README.md)
17-
* [查找](search/README.md)
18-
* [暴力枚举法](brute-force/README.md)
19-
* [深度优先搜索](dfs/README.md)
20-
* [广度优先搜索](bfs/README.md)
21-
* [分治法](divide-and-conquer/README.md)
22-
* [贪心法](greedy/README.md)
23-
* [动态规划](dp/README.md)
24-
* [第一部分 高级算法](advanced-part.md)
25-
* [](graph/README.md)
3+
* [线性表](linear-list/README.md)
4+
* [数组](linear-list/array.md)
5+
* [链表](linear-list/linked-list.md)
6+
* [字符串](string/README.md)
7+
* [栈和队列](stack-and-queue/README.md)
8+
* [](stack-and-queue/stack.md)
9+
* [队列](stack-and-queue/queue.md)
10+
* [二叉树](binary-tree/README.md)
11+
* [二叉树的遍历](binary-tree/traversal.md)
12+
* [二叉树的构建](binary-tree/construction.md)
13+
* [二叉查找树](binary-tree/bst.md)
14+
* [二叉树的递归](binary-tree/recursion.md)
15+
* [排序](sort/README.md)
16+
* [查找](search/README.md)
17+
* [暴力枚举法](brute-force/README.md)
18+
* [深度优先搜索](dfs/README.md)
19+
* [广度优先搜索](bfs/README.md)
20+
* [分治法](divide-and-conquer/README.md)
21+
* [贪心法](greedy/README.md)
22+
* [动态规划](dp/README.md)
23+
* [](graph/README.md)
2624

Diff for: cpp/README.md

+43-25
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,44 @@
1-
# Summary
2-
3-
* [第一部分 基础算法](basic-part.md)
4-
* [线性表](linear-list/README.md)
5-
* [数组](linear-list/array.md)
6-
* [链表](linear-list/linked-list.md)
7-
* [字符串](string/README.md)
8-
* [栈和队列](stack-and-queue/README.md)
9-
* [栈](stack-and-queue/stack.md)
10-
* [队列](stack-and-queue/queue.md)
11-
* [二叉树](binary-tree/README.md)
12-
* [二叉树的遍历](binary-tree/traversal.md)
13-
* [二叉树的构建](binary-tree/construction.md)
14-
* [二叉查找树](binary-tree/bst.md)
15-
* [二叉树的递归](binary-tree/recursion.md)
16-
* [排序](sort/README.md)
17-
* [查找](search/README.md)
18-
* [暴力枚举法](brute-force/README.md)
19-
* [深度优先搜索](dfs/README.md)
20-
* [广度优先搜索](bfs/README.md)
21-
* [分治法](divide-and-conquer/README.md)
22-
* [贪心法](greedy/README.md)
23-
* [动态规划](dp/README.md)
24-
* [第一部分 高级算法](advanced-part.md)
25-
* [](graph/README.md)
1+
# 算法精粹——举一反三,抛弃题海战术
2+
3+
市场上讲解算法的书已经汗牛充栋,我为什么还要写这本书呢?主要原因是我对目前市场上的大部分算法书都不太满意。 本书有如下特色:
4+
5+
1. 每道题都有在线OJ支持。本书的所有题目,都可以在 [www.algohub.org](http://www.algohub.org) 上找到。这样的一大好处是,读者可以边看书,边实现自己的代码,然后提交到网站上验证自己的想法是否正确。
6+
2. 每道题都有完整的代码。市场上的大部分书,都会讲思路,但给出的代码都是片段,不是完整可编译的代码。本书每题都有完整的代码,且每个代码经过千锤百炼,保证可读性的前提下尽可能简短,方面读者在面试中能快速写出来。
7+
3. 每道题都有多种解法。本书的宗旨是,用尽可能少的题目,覆盖尽可能多的算法。本书中的的每道题都有多种解法,每种解法不是简单的小改进,而是完全不同的思路,力求举一反三,让读者触类旁通。
8+
4. 本书支持多种主流编程语言。目前支持 Java, C++, C#, Python, Ruby, JavaScript, Swift, Scala, Clojure, 将来还会支持更多编程语言。
9+
10+
# 内容目录
11+
12+
* [线性表](linear-list/README.md)
13+
* [数组](linear-list/array.md)
14+
* [链表](linear-list/linked-list.md)
15+
* [字符串](string/README.md)
16+
* [栈和队列](stack-and-queue/README.md)
17+
* [](stack-and-queue/stack.md)
18+
* [队列](stack-and-queue/queue.md)
19+
* [二叉树](binary-tree/README.md)
20+
* [二叉树的遍历](binary-tree/traversal.md)
21+
* [二叉树的构建](binary-tree/construction.md)
22+
* [二叉查找树](binary-tree/bst.md)
23+
* [二叉树的递归](binary-tree/recursion.md)
24+
* [排序](sort/README.md)
25+
* [查找](search/README.md)
26+
* [暴力枚举法](brute-force/README.md)
27+
* [深度优先搜索](dfs/README.md)
28+
* [广度优先搜索](bfs/README.md)
29+
* [分治法](divide-and-conquer/README.md)
30+
* [贪心法](greedy/README.md)
31+
* [动态规划](dp/README.md)
32+
* [](graph/README.md)
33+
34+
35+
# Community
36+
37+
QQ 群: 237669375
38+
39+
Github: <https://www.github.com/soulmachine/algorithm-essentials>
40+
41+
42+
## License
43+
Book License: [CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)
2644

Diff for: cpp/SUMMARY.md

+21-23
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
11
# Summary
22

3-
* [第一部分 基础算法](basic-part.md)
4-
* [线性表](linear-list/README.md)
5-
* [数组](linear-list/array.md)
6-
* [链表](linear-list/linked-list.md)
7-
* [字符串](string/README.md)
8-
* [栈和队列](stack-and-queue/README.md)
9-
* [栈](stack-and-queue/stack.md)
10-
* [队列](stack-and-queue/queue.md)
11-
* [二叉树](binary-tree/README.md)
12-
* [二叉树的遍历](binary-tree/traversal.md)
13-
* [二叉树的构建](binary-tree/construction.md)
14-
* [二叉查找树](binary-tree/bst.md)
15-
* [二叉树的递归](binary-tree/recursion.md)
16-
* [排序](sort/README.md)
17-
* [查找](search/README.md)
18-
* [暴力枚举法](brute-force/README.md)
19-
* [深度优先搜索](dfs/README.md)
20-
* [广度优先搜索](bfs/README.md)
21-
* [分治法](divide-and-conquer/README.md)
22-
* [贪心法](greedy/README.md)
23-
* [动态规划](dp/README.md)
24-
* [第一部分 高级算法](advanced-part.md)
25-
* [](graph/README.md)
3+
* [线性表](linear-list/README.md)
4+
* [数组](linear-list/array.md)
5+
* [链表](linear-list/linked-list.md)
6+
* [字符串](string/README.md)
7+
* [栈和队列](stack-and-queue/README.md)
8+
* [](stack-and-queue/stack.md)
9+
* [队列](stack-and-queue/queue.md)
10+
* [二叉树](binary-tree/README.md)
11+
* [二叉树的遍历](binary-tree/traversal.md)
12+
* [二叉树的构建](binary-tree/construction.md)
13+
* [二叉查找树](binary-tree/bst.md)
14+
* [二叉树的递归](binary-tree/recursion.md)
15+
* [排序](sort/README.md)
16+
* [查找](search/README.md)
17+
* [暴力枚举法](brute-force/README.md)
18+
* [深度优先搜索](dfs/README.md)
19+
* [广度优先搜索](bfs/README.md)
20+
* [分治法](divide-and-conquer/README.md)
21+
* [贪心法](greedy/README.md)
22+
* [动态规划](dp/README.md)
23+
* [](graph/README.md)
2624

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Remove Duplicates from Sorted Array II
2+
// Time complexity: O(n), Space Complexity: O(1)
3+
class Solution {
4+
public:
5+
int removeDuplicates(vector<int>& nums) {
6+
if (nums.size() <= 2) return nums.size();
7+
8+
int index = 2;
9+
for (int i = 2; i < nums.size(); i++){
10+
if (nums[i] != nums[index - 2])
11+
nums[index++] = nums[i];
12+
}
13+
14+
return index;
15+
}
16+
};
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Remove Duplicates from Sorted Array II
2+
// Time Complexity: O(n), Space Complexity: O(1)
3+
class Solution {
4+
public:
5+
int removeDuplicates(vector<int>& nums) {
6+
const int n = nums.size();
7+
int index = 0;
8+
for (int i = 0; i < n; ++i) {
9+
if (i > 0 && i < n - 1 && nums[i] == nums[i - 1] && nums[i] == nums[i + 1])
10+
continue;
11+
12+
nums[index++] = nums[i];
13+
}
14+
return index;
15+
}
16+
};

Diff for: cpp/linear-list/array.md

+2-38
Original file line numberDiff line numberDiff line change
@@ -54,50 +54,14 @@ For example, given sorted array `A = [1,1,1,2,2,3]`, your function should return
5454

5555
### 代码1
5656

57-
```cpp
58-
// LeetCode, Remove Duplicates from Sorted Array II
59-
// 时间复杂度O(n),空间复杂度O(1)
60-
// @author hex108 (https://github.com/hex108)
61-
class Solution {
62-
public:
63-
int removeDuplicates(vector<int>& nums) {
64-
if (nums.size() <= 2) return nums.size();
65-
66-
int index = 2;
67-
for (int i = 2; i < nums.size(); i++){
68-
if (nums[i] != nums[index - 2])
69-
nums[index++] = nums[i];
70-
}
71-
72-
return index;
73-
}
74-
};
75-
```
57+
{% codesnippet "./code/remove-duplicates-from-sorted-array-ii-1.cpp", language="cpp" %}{% endcodesnippet %}
7658

7759

7860
### 代码2
7961

8062
下面是一个更简洁的版本。上面的代码略长,不过扩展性好一些,例如将\fn{occur < 2}改为\fn{occur < 3},就变成了允许重复最多3次。
8163

82-
```cpp
83-
// LeetCode, Remove Duplicates from Sorted Array II
84-
// @author 虞航仲 (http://weibo.com/u/1666779725)
85-
// 时间复杂度O(n),空间复杂度O(1)
86-
class Solution {
87-
public:
88-
int removeDuplicates(vector<int>& nums) {
89-
const int n = nums.size();
90-
int index = 0;
91-
for (int i = 0; i < n; ++i) {
92-
if (i > 0 && i < n - 1 && nums[i] == nums[i - 1] && nums[i] == nums[i + 1])
93-
continue;
94-
95-
nums[index++] = nums[i];
96-
}
97-
return index;
98-
}
99-
};
100-
```
64+
{% codesnippet "./code/remove-duplicates-from-sorted-array-ii-2.cpp", language="cpp" %}{% endcodesnippet %}
10165

10266

10367
### 相关题目

Diff for: cs/README.md

+43-25
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,44 @@
1-
# Summary
2-
3-
* [第一部分 基础算法](basic-part.md)
4-
* [线性表](linear-list/README.md)
5-
* [数组](linear-list/array.md)
6-
* [链表](linear-list/linked-list.md)
7-
* [字符串](string/README.md)
8-
* [栈和队列](stack-and-queue/README.md)
9-
* [栈](stack-and-queue/stack.md)
10-
* [队列](stack-and-queue/queue.md)
11-
* [二叉树](binary-tree/README.md)
12-
* [二叉树的遍历](binary-tree/traversal.md)
13-
* [二叉树的构建](binary-tree/construction.md)
14-
* [二叉查找树](binary-tree/bst.md)
15-
* [二叉树的递归](binary-tree/recursion.md)
16-
* [排序](sort/README.md)
17-
* [查找](search/README.md)
18-
* [暴力枚举法](brute-force/README.md)
19-
* [深度优先搜索](dfs/README.md)
20-
* [广度优先搜索](bfs/README.md)
21-
* [分治法](divide-and-conquer/README.md)
22-
* [贪心法](greedy/README.md)
23-
* [动态规划](dp/README.md)
24-
* [第一部分 高级算法](advanced-part.md)
25-
* [](graph/README.md)
1+
# 算法精粹——举一反三,抛弃题海战术
2+
3+
市场上讲解算法的书已经汗牛充栋,我为什么还要写这本书呢?主要原因是我对目前市场上的大部分算法书都不太满意。 本书有如下特色:
4+
5+
1. 每道题都有在线OJ支持。本书的所有题目,都可以在 [www.algohub.org](http://www.algohub.org) 上找到。这样的一大好处是,读者可以边看书,边实现自己的代码,然后提交到网站上验证自己的想法是否正确。
6+
2. 每道题都有完整的代码。市场上的大部分书,都会讲思路,但给出的代码都是片段,不是完整可编译的代码。本书每题都有完整的代码,且每个代码经过千锤百炼,保证可读性的前提下尽可能简短,方面读者在面试中能快速写出来。
7+
3. 每道题都有多种解法。本书的宗旨是,用尽可能少的题目,覆盖尽可能多的算法。本书中的的每道题都有多种解法,每种解法不是简单的小改进,而是完全不同的思路,力求举一反三,让读者触类旁通。
8+
4. 本书支持多种主流编程语言。目前支持 Java, C++, C#, Python, Ruby, JavaScript, Swift, Scala, Clojure, 将来还会支持更多编程语言。
9+
10+
# 内容目录
11+
12+
* [线性表](linear-list/README.md)
13+
* [数组](linear-list/array.md)
14+
* [链表](linear-list/linked-list.md)
15+
* [字符串](string/README.md)
16+
* [栈和队列](stack-and-queue/README.md)
17+
* [](stack-and-queue/stack.md)
18+
* [队列](stack-and-queue/queue.md)
19+
* [二叉树](binary-tree/README.md)
20+
* [二叉树的遍历](binary-tree/traversal.md)
21+
* [二叉树的构建](binary-tree/construction.md)
22+
* [二叉查找树](binary-tree/bst.md)
23+
* [二叉树的递归](binary-tree/recursion.md)
24+
* [排序](sort/README.md)
25+
* [查找](search/README.md)
26+
* [暴力枚举法](brute-force/README.md)
27+
* [深度优先搜索](dfs/README.md)
28+
* [广度优先搜索](bfs/README.md)
29+
* [分治法](divide-and-conquer/README.md)
30+
* [贪心法](greedy/README.md)
31+
* [动态规划](dp/README.md)
32+
* [](graph/README.md)
33+
34+
35+
# Community
36+
37+
QQ 群: 237669375
38+
39+
Github: <https://www.github.com/soulmachine/algorithm-essentials>
40+
41+
42+
## License
43+
Book License: [CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)
2644

0 commit comments

Comments
 (0)