![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
mgqixu
这个作者很懒,什么都没留下…
展开
-
【剑指offer】数据流中的中位数
数据流中的中位数本题利用堆排序思想。首先,使用最大堆和最小堆,保证最大堆的数<最小堆的数。每次插入和取出都需要调整堆。保持两个堆一样的结点数目,或者最小堆的结点数比最大堆多1。建堆:如果已经两个堆结点数目相同,放到最小堆,但如果该数小于最大堆,说明该数应该放到最大堆,插入最大堆之后取最大堆的堆顶插入到最小堆;如果已经两个堆结点数目不同,即最大堆的数少,应该放到最大堆,但如果该数大...原创 2019-05-16 21:13:33 · 143 阅读 · 0 评论 -
【剑指offer】最小的K个数
方法一:堆排序思想对n个数建立最小堆,可以得到数组从大到小的排序。因为只需要最小的k个数,因此只需要调整k次,最后的k个数就是最小的k个数。O(nlogn)class Solution: def GetLeastNumbers_Solution(self, tinput, k): # write code here def adjust_heap(a...原创 2019-05-16 21:14:56 · 123 阅读 · 0 评论 -
小和问题,数组的逆序对
本文介绍了归并算法的应用,小和问题和数组的逆序对解法一样。小和问题在一个数组中,每一个数的左边比其小的元素累加起来,叫做这个数组的小和。例如,[1,3,2,4,5]对于3,前面比它小的数有1对于2,前面比它小的数有1对于4,前面比它小的数有1,3,2对于5,前面比它小的数有1,3,2,4因此,该数组的小和为1+1+1+(1+3+2)+(1+3+2+4)=19解法:利用归并排序思...原创 2019-05-17 14:53:04 · 137 阅读 · 0 评论