目录
重点散列表:总结各种巧妙的应用,以及利用了散列表什么样的特点
栈和队列的使用,python包的使用
堆系统性学习
排序算法总结 (05/16)
- 排序算法,经典算法的要点在于什么?
- 排序算法刷题
搜索/二分搜索(05/20)
树:实现下,前中后序遍历 (05/21-05/28)
- 广搜深搜总结错题集
- 线段树
- dfs+memo
图:实现
- topology sort
递归/动态规划,区分不同,以及重点题目总结
链表和数组
双指针
贪心
内存作为新知识点进行学习
位操作的应用实例
专项总结:这个topic的典型应用场景有哪些?模板是什么?精选例题+每道题可以怎样follow up?
- 不同场景降低时间复杂度的方法有哪些
谷歌专项刷题:先说不做,把所有该说的都说完,想follow up,和behaviro的准备同时进行,穿插着来
labuladong每个专题刷典型题
务必掌握它们的具体用法、实现方法、应用场景以及时间和空间复杂度
各种数据结构:重要的一点是使用:适用于什么场景,时间空间复杂度是什么?典型的应用有哪些。一定要弄清楚什么情况下该使用什么数据结构。
数据结构 | 算法 | 其他 |
---|---|---|
链表:双指针 | 广度优先搜索 | 位操作 |
树、二叉树、单词查找树,segment tree | 深度优先搜索 | 内存(堆和栈) |
栈和队列 | 二分查找 | LRUCache、LFUCache |
堆 | 排序:快排,归并,桶 | 大o时间和空间 |
向量/数组列表/字符串 | 分治法 | 并查集 |
散列表 | 滑动窗口 | 面向对象设计 |
图 | 贪心算法 | 系统设计与可扩展性 |
动态规划、递归 | 线程与锁 |
参考资料
LeetCode Cookbook(数据结构+算法)
GitHub - LeetCode 101(侧重于算法)
程序员面试金典(数据结构+算法)
笔记链接
基础
专题
综合
坑
python的字典复制,有几种方法,复制程度不一样
Python dictionary字典的复制方法_小桔帽的博客-CSDN博客_python复制字典
dict1=dict2
,这个只是换个名字而已,并不能叫复制,对dict1
做的操作,都会出现在dict2
上dict1=dict2.copy()
,这个是浅复制:复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由浅复制得到的dict会受该操作影响dict1[a]=3
不会影响到dict2[a]
的值dict1[a].append(3)
会影响到dict2[a]
的值
dict1=deepcopy(dict2)
,这个是深复制:复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由深复制得到的dict不会受该操作影响dict1[a]=3
不会影响到dict2[a]
的值dict1[a].append(3)
不会影响到dict2[a]
的值
python的sortedlist怎么使用?
一个demo
from sortedcontainers import SortedList
class Solution:
def countSmaller(self, nums: List[int]) -> List[int]:
n = len(nums)
res = [0] * n
sl = SortedList()
for i in range(n-1, -1, -1): # 反向遍历
cnt = sl.bisect_left(nums[i]) # 找到右边比当前值小的元素个数
res[i] = cnt # 记入答案
sl.add(nums[i]) # 将当前值加入有序数组中
return res