栈
包含 Min 函数的栈
问题
栈支持 入栈和出栈, 但不支持查询最小值
想法
- 直接:维护一个小顶堆
- 启示:用一个变量维护最小值,但如果最小值出栈后就不知道了 维护一个栈,来保存每时刻最小值
做法
- 建立两个栈,栈 A 存储原数据,栈 B 存储以栈底开头的每段数据的最小值
- Push 时,A 中插入 x, B 中插入 ;
Pop 时,A,B 都需弹出栈顶;
GetMin 时,输出 B 的栈顶
Code
|
|
排序
第 K 大
问题
找出第 K 大的数 / 找出倒数第 K 大的 (同一类问题)
想法
- 使用快排的思想
- 快排一轮 基准点左边比他大,右边比他小。 或者相反。
实现
- 选取基准,将大的放到基准左边,小的放到右边
- 统计 大于基准的数的个数 cnt
若 ,说明答案在左边,递归
若 ,说明答案在右边,递归
Code
|
|