
算法题
GISer_流浪
来自GIS专业的三流程序猿
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
滑动窗口的中值--bisect解法
中位数是有序序列最中间的那个数。如果序列的大小是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数 leetcode链接 使用bisect效率高于建立最大堆和最小堆 函数文档 bisect.insort(sorted_list, nums[p2]) bisect.insort(a, x) Insert item x in list a, and keep it sorted ass...原创 2020-04-12 22:15:41 · 313 阅读 · 0 评论 -
数据流中的中位数--使用python内置的heapq模块
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值 链接 方法一 使用大堆存储左边的值 使用小堆存储右边的值 0 <= 保证大堆数据的长度 - 小堆数据的长度 <=1 数据长度为奇数时, 中位数为大堆堆顶 在python中只能使用小堆 使用最大堆时存...原创 2020-04-12 21:40:34 · 246 阅读 · 0 评论 -
最小的K个数
题目:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4 我们用一个大根堆实时维护数组的前 k小值。首先将前 k个数插入大根堆中,随后从第 k+1个数开始遍历,如果当前遍历到的数比大根堆的堆顶的数要小,就把堆顶的数弹出,再插入当前遍历到的数。最后将大根堆里的数存入数组返回即可。由于 C++ 语言中的堆(即优先队列)...原创 2020-03-20 19:24:46 · 132 阅读 · 0 评论