递归
  • 先递后归
  • 终止条件
  • 递归调用
  • 自下而上返回每一层计算结果
  • 递归层级的时间分析和开辟栈帧的空间分析
数组十链表可以模拟绝大部分数据结构
整数编码
  • 引入反码解决负数参与计算问题
  • 引入补码解决反码不能处理正负零产生歧义问题
  • 8 bit表示[-128,127],也就是-128 ~ -1, 0~127,补码中 0111 1111表示正整数最大值127,1111 1111表示负整数最大值-1。0000 0000表示0,1000 0000表示负数最小值-128
 
哈希表
  • 用键在哈希函数处理后和🪣大小取模后得到映射到🪣的index索引,节点存储键值对,pair.first代表键 ,pair.second值
  • 哈希冲突处理有1扩容即增大🪣容量,2链地址法,3开放寻址法(线性探测或多次哈希)
  • 链地址法,如果链表过长也会大幅降低查询效率,可以将链表转换为红黑树,AVL树
  • 主要是开放寻址就存在“不能直接删除元素”的问题,使用懒删除机制,不直接删除元素,而是利用常量TOMBSTONE 标记这个桶,在该机制下, 和 TOMBSTONE 都代表空桶,都可以放置键值对。但不同的是,线性探测到 TOMBSTONE 时应该继续遍历,因为其之下可能还存在键值对。
  • 然而,懒删除可能会加速哈希表的性能退化。这是因为每次删除操作都会产生一个删除标记,随着 TOMBSTONE 的增加,搜索时间也会增加,因为线性探测可能需要跳过多个 TOMBSTONE 才能找到目标元素。
 
排序图速记
notion image
0-1背包,动态规划空间优化注意:一维 dp表内循环为什么倒序遍历?
💡
因为是边遍历边更新一维dp表,倒序遍历更新的dp值不会影响到小背包容量下的dp更新。
完全背包确需要正序遍历
取决于二者的dp转移方程,一个取决于正上方和左上方的状态即i-1时。另一个取决于正上方和左方的状态。也就是一个需要未更新的i-1的状态所以倒序遍历,一个需要已更新的i行的状态,所以要正序遍历。
图表解释01背包
notion image
完全背包
notion image
leetcode K神推荐88
Loading...