o(n),n代表num大小
o(1)常量,与num无瓜
左:时间复杂度O(n)空间O(1) 右:空间复杂度O(n)时间O(1)
看空间复杂度,找变量,如果变量始终是常量,则是O(1)
常用空间复杂度
递归也是O(n)
时间复杂度一样,空间复杂度越小越好;空间复杂度一样,时间复杂度越小越好。
面试时把时间最好的方法和空间最好的方法都告诉他,工作时选最快的那个
3. 【数据结构】【数组Array】... P4 - 00:08
数组的定义
3. 【数据结构】【数组Array】... P4 - 02:07
区分1:元素和索引
3. 【数据结构】【数组Array】... P4 - 02:55
区分2:数组访问和数组搜索
3. 【数据结构】【数组Array】... P4 - 04:17
对任意数据结构都会涉及四种方法
3. 【数据结构】【数组Array】... P4 - 05:15
数组访问例子
数组自带属性:第一个元素所带位置
3. 【数据结构】【数组Array】... P4 - 07:06
搜索例子
3. 【数据结构】【数组Array】... P4 - 07:43
插入例子
3. 【数据结构】【数组Array】... P4 - 09:23
删除例子
3. 【数据结构】【数组Array】... P4 - 10:15
数组特点:适合读,不适合写
3. 【数据结构】【数组Array】... P4 - 10:49
数组常用操作
3. 【数据结构】【数组Array】... P4 - 12:49
练习题
4. Python3数组常用操作 P5 - 00:05
创建数组
4. Python3数组常用操作 P5 - 00:39
添加元素
1、直接把4添加到3后面 O(1)
2、3后面的位置被另一个变量占领,在内存空间中另外找一块能存4个元素的空间,把1、2、3挪过来,再添加4 O(n)
4. Python3数组常用操作 P5 - 01:45
O(n):在中间添加元素
4. Python3数组常用操作 P5 - 02:35
访问元素
4. Python3数组常用操作 P5 - 03:14
更新元素
4. Python3数组常用操作 P5 - 03:38
删除元素:三种方法
4. Python3数组常用操作 P5 - 05:20
获取数组长度
4. Python3数组常用操作 P5 - 05:37
遍历数组:3种方法
4. Python3数组常用操作 P5 - 07:02
查找某元素
4. Python3数组常用操作 P5 - 07:42
数组排序
伪代码
9. 【数据结构】【链表Linked List】知识点讲解 P10 - 00:42
链表
每一个节点:当前元素+指针(指向下一元素)
最后一个指针指向null节点,代表当前链表结束
9. 【数据结构】【链表Linked List】知识点讲解 P10 - 02:15
两种链表:单链表、双端链表(力扣不需要)
9. 【数据结构】【链表Linked List】知识点讲解 P10 - 03:08
链表的四个重要功能
特点:写得快、读得慢
9. 【数据结构】【链表Linked List】知识点讲解 P10 - 07:27
链表的常用操作
链表练习题
10.Python3链表常用操作 P11 - 00:18
创建链表
10.Python3链表常用操作 P11 - 00:28
添加元素
10.Python3链表常用操作 P11 - 03:02
访问元素
10.Python3链表常用操作 P11 - 03:54
搜索元素:找索引
10.Python3链表常用操作 P11 - 04:28
更新元素
10.Python3链表常用操作 P11 - 05:12
删除元素
仅仅一个删除操作是O(1),但我们要先找到元素位置,所以是O(N)
10.Python3链表常用操作 P11 - 07:32
获取链表长度
203移除链表元素
14. 【数据结构】【队列Queue】知识点讲解 P15 - 00:08
队列特点:先到先得
14. 【数据结构】【队列Queue】知识点讲解 P15 - 01:01
两种:单端队列、双端队列(用不多)
14. 【数据结构】【队列Queue】知识点讲解 P15 - 02:26
队列四种操作
14. 【数据结构】【队列Queue】知识点讲解 P15 - 04:06
队列常用操作
推荐练习题
单端队列的操作方法
15. Python3队列常用操作 P16 - 00:22
创建队列
15. Python3队列常用操作 P16 - 00:36
添加元素
15. Python3队列常用操作 P16 - 01:07
获取元素
15. Python3队列常用操作 P16 - 01:43
删除元素
15. Python3队列常用操作 P16 - 02:56
队列为空判断
15. Python3队列常用操作 P16 - 03:22
遍历队列
933题思路
伪代码
18. 【数据结构】【栈Stack】知识点讲解 P19 - 00:42
栈在计算机中的应用 浏览器后退
18. 【数据结构】【栈Stack】知识点讲解 P19 - 01:24
栈的操作复杂度分析
18. 【数据结构】【栈Stack】知识点讲解 P19 - 02:23
栈的常用操作
18. 【数据结构】【栈Stack】知识点讲解 P19 - 03:54
练习题
19. Python3栈常用操作 P20 - 00:05
创建、添加
19. Python3栈常用操作 P20 - 00:55
获取、删除栈顶元素
19. Python3栈常用操作 P20 - 02:22
栈的大小、是否为空
19. Python3栈常用操作 P20 - 03:30
栈的便利(重点)
23. 【数据结构】【哈希表HashTab... P24 - 00:42
chua一下
23. 【数据结构】【哈希表HashTab... P24 - 01:30
哪个数据结构可以chua一下
数组可以根据索引chua一下定位
23. 【数据结构】【哈希表HashTab... P24 - 03:16
编程语言里的哈希表
23. 【数据结构】【哈希表HashTab... P24 - 04:47
哈希碰撞
解决方法:变成链表
23. 【数据结构】【哈希表HashTab... P24 - 06:32
数据结构分析
23. 【数据结构】【哈希表HashTab... P24 - 09:25
哈希表常用操作
练习题
496是上一章节刷过的,用了2个栈,这里用1个栈+1个哈希表
24. Python3 哈希表常用操作 P25 - 00:06
哈希表创建(直接用字典也可以)
24. Python3 哈希表常用操作 P25 - 01:20
添加元素(分数组和字典)
24. Python3 哈希表常用操作 P25 - 03:20
修改元素
24. Python3 哈希表常用操作 P25 - 03:44
删除元素
24. Python3 哈希表常用操作 P25 - 05:01
获取元素
24. Python3 哈希表常用操作 P25 - 05:20
检查key存在?
24. Python3 哈希表常用操作 P25 - 06:11
哈希表长度
29.【数据结构】【集合Set】知识点讲解 P30 - 02:47
集合作用
29.【数据结构】【集合Set】知识点讲解 P30 - 03:47
集合的分类
29.【数据结构】【集合Set】知识点讲解 P30 - 04:25
哈希集合
29.【数据结构】【集合Set】知识点讲解 P30 - 07:21
集合的分析
29.【数据结构】【集合Set】知识点讲解 P30 - 10:27
集合的常用操作
习题
30. Python3 哈希集合常用操作 P31 - 00:09
创建集合、添加元素
30. Python3 哈希集合常用操作 P31 - 01:26
搜索、删除元素
30. Python3 哈希集合常用操作 P31 - 02:36
长度
34. 【数据结构】【树Tree】知识点讲解 P35 - 02:44
树的高度、深度、层(易混淆)
34. 【数据结构】【树Tree】知识点讲解 P35 - 04:12
二叉树
34. 【数据结构】【树Tree】知识点讲解 P35 - 08:12
二叉树的遍历
习题
36. 【数据结构】【堆Heap】知识点讲解 P37 - 02:26
什么样的完全二叉树是堆
36. 【数据结构】【堆Heap】知识点讲解 P37 - 03:53
分析数据结构
36. 【数据结构】【堆Heap】知识点讲解 P37 - 04:35
堆的添加和删除为啥是logn
36. 【数据结构】【堆Heap】知识点讲解 P37 - 07:00
堆的常用操作
练习题
堆的删除
36-2. 更正:创建堆「Heapify」的时间复杂度O(N) P39 - 00:43
堆化操作:一组数-->完全二叉树
36-2. 更正:创建堆「Heapify」的时间复杂度O(N) P39 - 04:29
时间复杂度分析:转二叉树O(n),将二叉树转化为最小堆也是O(n)
37. Python3 堆的常用操作 P40 - 00:09
首先导入模块heapq
创建堆,使用函数heapify()
添加元素,使用函数heappush()
堆顶元素,打印第一个元素
37. Python3 堆的常用操作 P40 - 01:41
删除堆顶元素heappop()
堆的遍历(边删除边遍历)
41.【数据结构】【图Graph】知识点讲解 P44 - 00:58
树和图节点关系
41.【数据结构】【图Graph】知识点讲解 P44 - 04:04
有向图
41.【数据结构】【图Graph】知识点讲解 P44 - 05:35
权重图
43. 【力扣算法】【双指针 Two Poin... P46 - 00:08
双指针是什么
43. 【力扣算法】【双指针 Two Poin... P46 - 01:04
case 1:有序数组
普通双指针:时间复杂度n方
43. 【力扣算法】【双指针 Two Poin... P46 - 03:37
利用有序特性:对撞双指针,时间复杂度n
43. 【力扣算法】【双指针 Two Poin... P46 - 05:50
快慢双指针举例
case 2
习题
46. 【力扣算法】【二分查找法 Binary... P49 - 01:00
二分查找法:0-100找23
46. 【力扣算法】【二分查找法 Binary... P49 - 02:15
怎么遇到呢
使用条件:必须是有序数组
46. 【力扣算法】【二分查找法 Binary... P49 - 04:04
如果无序
习题
经典题,反复刷,强化记忆
索引中间值
51. 【力扣算法】【滑动窗口 Sliding ... P54 - 00:07
滑动窗口目的:减少while循环
51. 【力扣算法】【滑动窗口 Sliding ... P54 - 01:18
常规方法的问题(重合的数相加)
滑动窗口思路
51. 【力扣算法】【滑动窗口 Sliding ... P54 - 03:23
定长问题:滑动窗口
54. 【力扣算法】【递归 Recursion】知识点讲解 P57 - 01:56
递归4要素
54. 【力扣算法】【递归 Recursion】知识点讲解 P57 - 02:59
举例子:斐波那契
习题
58. 【力扣算法】【分治法 Divide & C... P61 - 00:09
分治法主要思想
58. 【力扣算法】【分治法 Divide & C... P61 - 00:51
举例子
多数元素
分治法思路
伪代码
61. 【力扣算法】【回溯法 Backtrac... P64 - 00:53
回溯法一个生活中的例子
61. 【力扣算法】【回溯法 Backtrac... P64 - 02:33
经典的回溯
伪代码
64.【力扣算法】【深度优先搜索 D... P67 - 00:39
深度优先DFS
64.【力扣算法】【深度优先搜索 D... P67 - 01:15
DFS主要应用和例子
64.【力扣算法】【深度优先搜索 D... P67 - 03:03
例子:子集
64.【力扣算法】【深度优先搜索 D... P67 - 05:52
DFS和回溯法的区别
递归法
BFS方法
67. 【力扣算法】【宽度优先搜索 B... P70 - 00:13
BFS思想
67. 【力扣算法】【宽度优先搜索 B... P70 - 01:42
例子
75. 【力扣算法】【并查集 Union F... P73 - 00:46
union find:一直找根节点
75. 【力扣算法】【并查集 Union F... P73 - 04:05
生活中的例子
75. 【力扣算法】【并查集 Union F... P73 - 07:24
编程如何实现
模板
76. 【力扣算法】【并查集优化 Union Find ... P74 - 00:36
quick find
76. 【力扣算法】【并查集优化 Union Find ... P74 - 04:05
quick union
76. 【力扣算法】【并查集优化 Union Find ... P74 - 05:00
比较两棵树的高,矮的树连接到高的树
76. 【力扣算法】【并查集优化 Union Find ... P74 - 06:44
79. 【力扣算法】【贪心算法 Gree... P75 - 00:22
核心思想
79. 【力扣算法】【贪心算法 Gree... P75 - 01:31
例子:零钱兑换问题
79. 【力扣算法】【贪心算法 Gree... P75 - 03:39
例子:不能凑整
回溯:不取5,取次优解3
83. 【力扣算法】【记忆化搜索 Memoi... P76 - 00:45
目的:减少重复计算
86. 【力扣算法】【动态规划 Dynamic Pr... P77 - 00:50
入门例子
86. 【力扣算法】【动态规划 Dynamic Pr... P77 - 08:08
动态规划三要素和整个过程
86. 【力扣算法】【动态规划 Dynamic Pr... P77 - 15:14
动态规划能干嘛
89.【力扣算法】【前缀树 Trie】... P80 - 00:16
前缀树的应用:百度自动匹配
89.【力扣算法】【前缀树 Trie】... P80 - 01:39
操作
标签: