Skip to content

Commit 8e33f62

Browse files
committed
修改数据结构与算法
1 parent c3f5ab2 commit 8e33f62

8 files changed

Lines changed: 59 additions & 81 deletions

File tree

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,6 @@ Copyright (c) 2021-present, Frank Lam
421421
</div>
422422

423423

424-
425424
<div align="center">
426425
<p>
427426
在颠覆世界的同时,也要好好关照自己。
@@ -434,5 +433,5 @@ Copyright (c) 2021-present, Frank Lam
434433
from zero to hero.
435434
</p>
436435
</div>
437-
<div align="center"> <img src="assets/wechat/wx-green.png" width="90%"/></div>
436+
<div align="center"> <img src="assets/wechat/wx-green.png" width="70%"/></div>
438437

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# LeetCode
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<div align="left"><img src="assets/logo7.svg" width="80px"/></div>
2+
3+
# 数据结构与算法
4+
5+
## 学习路径
6+
7+
| 部分 | 章节 | 概要 |
8+
| :--- | :---------------------------------- | :--------------------------------------------------- |
9+
|| [数据结构](数据结构.md) | 线性表、栈和队列、树和二叉树等经典数据结构 |
10+
|| [算法思想](算法思想.md) | 排序算法、动态规划、递归、回溯法、贪心算法等经典算法 |
11+
|| [LeetCode 题解](LeetCode 题解.md) | LeetCode 热题 HOT 100 |
12+
13+
14+
15+
## 参考资料
16+
17+
- 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台
18+
https://leetcode-cn.com/problemset/all
19+
20+
21+
22+
## 学习课程
23+
24+
| 课程 | 推荐 |
25+
| ------------------------------------------------------------ | ----------------------------------------- |
26+
| [【慕课网】刘宇波:玩转数据结构,从入门到进阶](https://coding.imooc.com/class/207.html) | 数据结构从底层到实现,浅显易懂 |
27+
| [【慕课网】刘宇波:程序员的内功修炼,学好算法与数据结构](https://coding.imooc.com/class/71.html) | 程序员的内功修炼,强烈推荐 |
28+
| [【慕课网】刘宇波:玩转算法面试 leetcode题库分门别类详细解析](https://coding.imooc.com/class/82.html) | LeetCode 刷题入门,强烈推荐 |
29+
| [【极客时间】覃超:算法面试通关40讲](https://time.geekbang.org/course/intro/130) | 市面上比较新的课程,推荐 |
30+
| [【慕课网】刘宇波:看得见的算法 7个经典应用诠释算法精髓](https://coding.imooc.com/class/138.html) | 通过7款经典好玩游戏,真正将算法用于实际开 |
31+
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading

notes/data-structures-and-algorithms/数据结构.md

Whitespace-only changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 算法思想
2+

notes/数据结构与算法.md

Lines changed: 22 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,6 @@
1-
<!-- TOC -->
2-
3-
- [前言](#前言)
4-
- [第一部分:数据结构](#第一部分数据结构)
5-
- [一、线性表](#一线性表)
6-
- [二、栈和队列](#二栈和队列)
7-
- [三、树和二叉树](#三树和二叉树)
8-
- [1. 红黑树](#1-红黑树)
9-
- [2. 二叉树](#2-二叉树)
10-
- [二分查找法](#二分查找法)
11-
- [二叉树遍历](#二叉树遍历)
12-
- [3. 二分搜索树](#3-二分搜索树)
13-
- [深度优先遍历(前序、中序、后序遍历)](#深度优先遍历前序中序后序遍历)
14-
- [广度优先遍历(层序遍历)](#广度优先遍历层序遍历)
15-
- [4. AVL树](#4-avl树)
16-
- [5. B和B+](#5-b和b)
17-
- [四、字符串和数组](#四字符串和数组)
18-
- [第二部分:算法思想](#第二部分算法思想)
19-
- [一、排序](#一排序)
20-
- [1. 选择排序(Selection Sort)](#1-选择排序selection-sort)
21-
- [2. 插入排序(Insertion Sort)](#2-插入排序insertion-sort)
22-
- [3. 冒泡排序(Bubble Sort)](#3-冒泡排序bubble-sort)
23-
- [4. 希尔排序(Shell Sort)](#4-希尔排序shell-sort)
24-
- [5. 归并排序(Merge Sort)](#5-归并排序merge-sort)
25-
- [6. 快速排序(Quick Sort)](#6-快速排序quick-sort)
26-
- [1. 普通快速排序](#1-普通快速排序)
27-
- [2. 双路快速排序](#2-双路快速排序)
28-
- [3. 三路快速排序](#3-三路快速排序)
29-
- [7. 堆排序(Heap Sort)](#7-堆排序heap-sort)
30-
- [1. 堆](#1-堆)
31-
- [2. 上浮和下沉](#2-上浮和下沉)
32-
- [3.插入元素](#3插入元素)
33-
- [4. 删除最大元素](#4-删除最大元素)
34-
- [5. 堆排序](#5-堆排序)
35-
- [6. 堆排序的应用——Top K问题](#6-堆排序的应用top-k问题)
36-
- [8. 计数排序和流排序](#8-计数排序和流排序)
37-
- [9. 排序算法总结](#9-排序算法总结)
38-
- [二、递归和回溯法](#二递归和回溯法)
39-
- [1. 例题](#1-例题)
40-
- [2. 排列问题](#2-排列问题)
41-
- [3. 组合问题](#3-组合问题)
42-
- [4. 回溯法的剪枝](#4-回溯法的剪枝)
43-
- [5. 二维平面回溯法](#5-二维平面回溯法)
44-
- [6. floodfill算法](#6-floodfill算法)
45-
- [三、动态规划](#三动态规划)
46-
- [1. 斐波那契数列](#1-斐波那契数列)
47-
- [1.1 递归方式(自顶向下)](#11-递归方式自顶向下)
48-
- [1.2 记忆化搜索(自底向上)](#12-记忆化搜索自底向上)
49-
- [1.3 动态规划](#13-动态规划)
50-
- [2. 背包问题](#2-背包问题)
51-
- [(1)记忆化搜索](#1记忆化搜索)
52-
- [(2)动态规划](#2动态规划)
53-
- [(3)动态规划优化思路1](#3动态规划优化思路1)
54-
- [(4)动态规划优化思路2](#4动态规划优化思路2)
55-
- [(5)背包问题更多变种](#5背包问题更多变种)
56-
- [3. 最长上升子序列](#3-最长上升子序列)
57-
- [4. 最长公共子序列](#4-最长公共子序列)
58-
- [四、贪心算法](#四贪心算法)
59-
- [1. assign-cookies](#1-assign-cookies)
60-
- [第三部分:面试指南](#第三部分面试指南)
61-
- [1. 判单链表是否对称](#1-判单链表是否对称)
62-
- [2. 合并两个有序数组成一个有序数组](#2-合并两个有序数组成一个有序数组)
63-
- [3. 求二叉树中值为x的结点的层号](#3-求二叉树中值为x的结点的层号)
64-
- [阿里面经OneNote](#阿里面经onenote)
65-
- [第四部分:参考资料](#第四部分参考资料)
66-
67-
<!-- /TOC -->
681
# 前言
692

70-
本文将系统总结算法面试和经典数据结构相关知识点,在这里分成 【数据结构】 和 【算法】 两部分展开。这里将展示主要的核心知识点,关于代码面试的Leetcode习题请转向代码仓库[Interview-code](https://github.com/frank-lam/interview_code)
3+
本文将系统总结算法面试和经典数据结构相关知识点,在这里分成 【数据结构】 和 【算法】 两部分展开。这里将展示主要的核心知识点,关于代码面试的 Leetcode 习题请转向代码仓库[Interview-code](https://github.com/frank-lam/interview_code)
714

725

736

@@ -94,6 +27,8 @@
9427
- 数组
9528
- 链表
9629

30+
31+
9732
## 二、栈和队列
9833

9934

@@ -168,9 +103,9 @@ private static int searchDfs(int[] data, int l, int r, int target) {
168103
}
169104
```
170105

171-
#####
172106

173-
### 4.. 二叉树遍历
107+
108+
### 4. 二叉树遍历
174109

175110
#### 深度优先遍历(前序、中序、后序遍历)
176111

@@ -300,6 +235,14 @@ public:
300235

301236

302237

238+
## 五、图结构
239+
240+
### 邻接矩阵
241+
242+
### 邻接表
243+
244+
245+
303246
# 第二部分:算法思想
304247

305248
## 一、排序
@@ -351,13 +294,15 @@ private static void swap(int[] arr, int i, int j) {
351294

352295
```java
353296
public static void sort(int[] arr) {
354-
for (int i = 0; i < arr.length - 1; i++) {
355-
for (int j = i + 1; j > 0; j--) {
356-
if (arr[j] < arr[j - 1])
357-
swap(arr, j, j - 1); // 大量的交换会消耗时间
358-
else
359-
break;
297+
for (int i = 0; i < arr.length; i++) {
298+
// 选择 arr[i...n) 中的最小值
299+
int minIndex = i;
300+
for (int j = i + 1; j < arr.length; j++) {
301+
if (arr[minIndex] > arr[j]) {
302+
minIndex = j;
303+
}
360304
}
305+
swap(arr, i, minIndex);
361306
}
362307
}
363308

@@ -385,7 +330,7 @@ private static void swap(int[] arr, int i, int j) {
385330

386331
**算法分析**
387332

388-
插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
333+
插入排序在实现上,通常采用 in-place 排序(即只需用到 O(1) 的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
389334

390335

391336

@@ -1676,12 +1621,10 @@ void level_in_x(BinTree BT,char x,int level)
16761621
# 第四部分:参考资料
16771622

16781623
- [数据结构与算法系列 目录 - 如果天空不死 - 博客园](http://www.cnblogs.com/skywang12345/p/3603935.html)
1679-
- [Interview-Notebook/算法.md at master · CyC2018/Interview-Notebook](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E7%AE%97%E6%B3%95.md#%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F)
16801624
- [十大经典排序算法](https://www.cnblogs.com/onepixel/articles/7674659.html)
16811625
- [VisuAlgo - visualising data structures and algorithms through animation](https://visualgo.net/en)
16821626
- [Data Structure Visualization](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html)
16831627
- [海量数据处理:十道面试题与十个海量数据处理方法总结 - chenhuan001 - 博客园](https://www.cnblogs.com/chenhuan001/p/5866916.html)
16841628

16851629

16861630

1687-

0 commit comments

Comments
 (0)