数据结构与算法脉络总结

一、数据结构

1. 链表

k个一组翻转链表
奇偶链表

2. 栈

3. 队列

4. 散列表

确定两个字符串是否接近
字母异位词分组

5. 集合

6. 树

(1)二叉树

根到叶路径上的不足节点
二叉搜索子树的最大键值和
从中序与后序遍历序列构造二叉树

(2)字典树

搜索推荐系统

(3)堆

最大子序列的分数

(4)霍夫曼树(最优二叉树)

叶值的最小代价生成树

(5)红黑树

7. 优先队列

雇佣 K 位工人的总代价

8. 并查集

统计封闭岛屿的数目

9. 其他:单调栈

单调栈:每日温度

二、算法

1. 排序

(1)插入排序

(2)快速排序

(3)归并排序

(4)堆排序

2. 字符串

(1)kmp

(2)ac自动机

(3)trie

3. 搜索

回溯:铺瓷砖
记忆化搜索:通知所有员工所需的时间

4. 图论

(1)深度优先搜索

全排列去重
子集
回溯:路径总和 III

(2)广度优先搜索

二进制矩阵中的最短路径
T秒后青蛙的位置
推箱子
除法求值

(3)拓扑

课程表
课程表2

5. 贪心

6. 动态规划

最小花费爬楼梯
打家劫舍
不同路径

7. +数学

蓄水
字符串的最大公因子
圆和矩形是否有重叠

8. 其他:递归、分治、二分查找、双指针、多路归并、多数投票、滑动窗口、前后缀和、位运算

分治:合并 K 个升序链表
双指针:反转字符串中的单词
双指针:压缩字符串
双指针:盛水最多的容器
递归:字符串解码
递归:回文链表
多数投票:多数元素
二分查找:礼盒的最大甜蜜度
二分查找:爱吃香蕉的珂珂
二分查找:修车的最少时间
二分查找:搜索二维矩阵
滑动窗口:删掉一个元素以后全为 1 的最长子数组
滑动窗口:单字符重复子串的最大长度
位运算:二进制链表转整数
位运算:宝石与石头
前后缀和:除自身以外数组的乘积

posted @ 2023-05-28 18:06  linukey  阅读(30)  评论(0)    收藏  举报