Randomized priority queue

Describe how to add the methods \mathtt{sample()}sample() and \mathtt{delRandom()}delRandom() to our binary heap implementation. The two methods return a key that is chosen uniformly at random among the remaining keys, with the latter method also removing that key. The \mathtt{sample()}sample() method should take constant time; the \mathtt{delRandom()}delRandom() method should take logarithmic time. Do not worry about resizing the underlying array.

public class PriorityQueue {
    /*
    Question 1
    Dynamic median.
    Design a data type that supports insert in logarithmic time, find-the-median in constant time, and remove-the-median in logarithmic time.
     */

    class MediaHeap {
        private MaxPQ<Integer> left;
        private MinPQ<Integer> right;
        private int L;
        private int R;

        MediaHeap() {
            left = new MaxPQ<Integer>();
            right = new MinPQ<Integer>();
        }

        public double findMedian() {
            int L = left.size();
            int R = right.size();
            if (L == R)
                return ((double)left.max() + (double)right.min()) / 2;
            else if (L > R)
                return left.max();
            else
                return right.min();
        }

        public void insert(int key) {
            double median = findMedian();
            int L = left.size();
            int R = right.size();
            if (key <= median) {
                left.insert(key);
                if (L - R > 1)
                    right.insert(left.delMax());
            }
            else {
                right.insert(key);
                if (R - L > 1)
                    left.insert(right.delMin());
            }
        }

        public void removeMedian() {
            int L = left.size();
            int R = right.size();
            if (L > R) {
                left.delMax();
            }
            else {
                right.delMin();
            }
        }

    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茧妒,一起剝皮案震驚了整個濱河市翎碑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異朴乖,居然都是意外死亡,警方通過查閱死者的電腦和手機助赞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門买羞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雹食,你說我怎么就攤上這事畜普。” “怎么了群叶?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵吃挑,是天一觀的道長钝荡。 經(jīng)常有香客問我,道長舶衬,這世上最難降的妖魔是什么埠通? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮逛犹,結(jié)果婚禮上端辱,老公的妹妹穿的比我還像新娘。我一直安慰自己虽画,他們只是感情好舞蔽,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著码撰,像睡著了一般渗柿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脖岛,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天朵栖,我揣著相機與錄音,去河邊找鬼鸡岗。 笑死混槐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的轩性。 我是一名探鬼主播声登,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼揣苏!你這毒婦竟也來了悯嗓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤卸察,失蹤者是張志新(化名)和其女友劉穎脯厨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坑质,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡合武,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涡扼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稼跳。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吃沪,靈堂內(nèi)的尸體忽然破棺而出汤善,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布红淡,位于F島的核電站不狮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏在旱。R本人自食惡果不足惜摇零,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颈渊。 院中可真熱鬧遂黍,春花似錦终佛、人聲如沸俊嗽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绍豁。三九已至,卻和暖如春牙捉,著一層夾襖步出監(jiān)牢的瞬間竹揍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工邪铲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芬位,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓带到,卻偏偏與公主長得像昧碉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子揽惹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 我是文文被饿,第06天打卡 學(xué)習(xí)心得:昨天作業(yè)寫的五個選品,突然就覺得很難結(jié)合實體店產(chǎn)品和服務(wù)來切入搪搏,因為一直局限于做...
    文文_c6ac閱讀 109評論 0 1
  • 我是一個零零后的小姑娘狭握,也是一個土生土長的農(nóng)村妹子,對于我來說疯溺,學(xué)習(xí)真的好重要论颅,就算我真的不喜歡埋頭于書籍中,也要...
    易懂雙宸閱讀 347評論 1 3
  • 睡前拉著兒子“來跟媽媽聊一聊”囱嫩,“我知道你要聊什么~”敏感如他恃疯。 早上在便利店買了三明治做早餐,到...
    陽光一直明媚閱讀 165評論 0 0
  • 不要讓戰(zhàn)術(shù)上勤奮掩蓋戰(zhàn)略上的懶惰挠说。很多人都生活在“讓自己看上去很努力”的狀態(tài)中澡谭,比如說,很多人認(rèn)為“做事情”很重要...
    85后栗子閱讀 761評論 0 0