基础算法
- 快速排序 -785. 快速排序(双指针原地交换的思想) ||| 786. 第k个数(实现
nth_element(a,a + k - 1, a + n)函数,O(n)
)面试题 17.14. 最小K个数(用堆O(nlogk),快排O(n))
-
归并 -787. 归并排序 ||| 788. 逆序对的数量
面试题 17.09. 第 k 个数(多路归并)
-
153. 寻找旋转排序数组中的最小值(二分的本质:二段性)
-
高精度 - 791. 高精度加法 ||| 792. 高精度减法 ||| 793. 高精度乘法 ||| 794. 高精度除法
数据结构
- 栈 - 828. 模拟栈
- 队列 - 829. 模拟队列
- 单调栈 - 830. 单调栈
leetcode
155. 最小栈 (单调栈维护最小栈)
496. 下一个更大元素 I(单调栈模板题,先用hash表存nums2下一个更大的数,然后遍历nums1即可)
503. 下一个更大元素 II(处理循环数组,在后面复制一遍原数组,取模实现不用真的复制)
739. 每日温度(倒着遍历,存索引)
42. 接雨水(单调栈挺难想的,基本思路:找到左右两侧的高点,维护一个单调下降的栈,如果出现异常,那么stk.top()就是bottom,当前点i是r,下一个stk.top()是l,当前单为的面积是:长(r - l - 1) * (min(左高,右高) - 当前高度) )
84. 柱状图中最大的矩形(维护一个单调上升栈,答案一定在以某个矩形为高,如果出现异常,宽度就是cur往右比它高的) - 单调队列 -154. 滑动窗口