LeetCode 295. 数据流的中位数(大小堆)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 295. 数据流的中位数(大小堆)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1. 題目
- 2. 大小堆解題
1. 題目
中位數(shù)是有序列表中間的數(shù)。如果列表長(zhǎng)度是偶數(shù),中位數(shù)則是中間兩個(gè)數(shù)的平均值。
例如, [2,3,4] 的中位數(shù)是 3 [2,3] 的中位數(shù)是 (2 + 3) / 2 = 2.5設(shè)計(jì)一個(gè)支持以下兩種操作的數(shù)據(jù)結(jié)構(gòu):void addNum(int num) - 從數(shù)據(jù)流中添加一個(gè)整數(shù)到數(shù)據(jù)結(jié)構(gòu)中。 double findMedian() - 返回目前所有元素的中位數(shù)。示例: addNum(1) addNum(2) findMedian() -> 1.5 addNum(3) findMedian() -> 2進(jìn)階: 如果數(shù)據(jù)流中所有整數(shù)都在 0 到 100 范圍內(nèi),你將如何優(yōu)化你的算法? 如果數(shù)據(jù)流中 99% 的整數(shù)都在 0 到 100 范圍內(nèi),你將如何優(yōu)化你的算法?來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/find-median-from-data-stream
《劍指Offer》同題:面試題41. 數(shù)據(jù)流中的中位數(shù) 鏈接
2. 大小堆解題
參考我的博客 數(shù)據(jù)結(jié)構(gòu) 堆(優(yōu)先隊(duì)列)
類似題目:
LeetCode 480. 滑動(dòng)窗口中位數(shù)(大小堆升級(jí)版+set實(shí)現(xiàn))
LeetCode 703. 數(shù)據(jù)流中的第K大元素(優(yōu)先隊(duì)列)
- 建立大頂堆(存放數(shù)據(jù)中較小的部分),小頂堆(存放較大的部分)
- 同時(shí)維護(hù)兩個(gè)堆的大小相等或者大頂堆多一個(gè)
- 那么兩個(gè)堆的堆頂就是中間的數(shù)據(jù),根據(jù)奇偶,輸出堆頂
總結(jié)
以上是生活随笔為你收集整理的LeetCode 295. 数据流的中位数(大小堆)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 773. 滑动谜题(B
- 下一篇: LeetCode 131. 分割回文串(