欢迎光临散文网 会员登陆 & 注册

手把手带你刷Leetcode力扣|各个击破数据结构和算法|大厂面试必备技能【已完

2023-01-12 23:04 作者:不败阿豪  | 我要投稿


0. 【必看】视频简介 P1 - 00:24





1. 算法的时间复杂度 P2 - 00:54


o(n),n代表num大小


1. 算法的时间复杂度 P2 - 04:17


o(1)常量,与num无瓜






2. 算法的空间复杂度 P3 - 00:33


左:时间复杂度O(n)空间O(1) 右:空间复杂度O(n)时间O(1)

看空间复杂度,找变量,如果变量始终是常量,则是O(1)


2. 算法的空间复杂度 P3 - 04:49


常用空间复杂度



2. 算法的空间复杂度 P3 - 05:56


递归也是O(n)

时间复杂度一样,空间复杂度越小越好;空间复杂度一样,时间复杂度越小越好。


2. 算法的空间复杂度 P3 - 06:44


面试时把时间最好的方法和空间最好的方法都告诉他,工作时选最快的那个




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


数组排序



6. 力扣485 P7 - 02:59


伪代码




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


遍历队列



17. 力扣933 P18 - 02:18


933题思路



17. 力扣933 P18 - 04:44


伪代码


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


如果无序

习题

经典题,反复刷,强化记忆


47. 力扣 704 P50 - 04:57


索引中间值



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


举例子



多数元素



60. 力扣 53 P63 - 01:35


分治法思路



60. 力扣 53 P63 - 03:52



伪代码





61. 【力扣算法】【回溯法 Backtrac... P64 - 00:53


回溯法一个生活中的例子



61. 【力扣算法】【回溯法 Backtrac... P64 - 02:33


经典的回溯



62. 力扣 22 P65 - 00:50





62. 力扣 22 P65 - 06:01


伪代码





64.【力扣算法】【深度优先搜索 D... P67 - 00:39


深度优先DFS



64.【力扣算法】【深度优先搜索 D... P67 - 01:15


DFS主要应用和例子



64.【力扣算法】【深度优先搜索 D... P67 - 03:03


例子:子集



64.【力扣算法】【深度优先搜索 D... P67 - 05:52


DFS和回溯法的区别



65. 力扣 938 P68 - 01:15


递归法





65. 力扣 938 P68 - 06:43


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


操作






手把手带你刷Leetcode力扣|各个击破数据结构和算法|大厂面试必备技能【已完的评论 (共 条)

分享到微博请遵守国家法律