Leetcode 4. Median of Two Sorted Arrays

這題想錯(cuò)了达舒,復(fù)雜度并不符合要求囧

原題地址:https://leetcode.com/problems/median-of-two-sorted-arrays/description/

題目描述

There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

在log(m+n)的時(shí)間復(fù)雜度內(nèi)找出兩個(gè)數(shù)組的中位數(shù)。數(shù)組元素總數(shù)是偶數(shù)的話取中間兩個(gè)值的均值。

解題思路

分別為兩個(gè)數(shù)組維護(hù)一個(gè)最大堆液样,計(jì)算出元素總數(shù)t,每次比較兩個(gè)堆堆頂?shù)脑卮笮⌒费荩瑥棾鲚^大的那個(gè)愤诱,進(jìn)行(t-1)/2次這樣的操作之后,再根據(jù)元素總個(gè)數(shù)的奇偶來返回適當(dāng)?shù)闹地はィ绻瞧鏀?shù)量愧,只要取當(dāng)前兩個(gè)堆頂元素中較大的那個(gè)返回,如果是偶數(shù)帅矗,就要進(jìn)行兩次這樣的操作然后求均值偎肃。全程都要注意某個(gè)數(shù)組的堆為空或者在過程中變空的情況。

代碼

#include <algorithm>
class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int total = nums1.size()+nums2.size();
        int mid = (total-1)/2;
        make_heap(nums1.begin(),nums1.end());
        make_heap(nums2.begin(),nums2.end());
        for(int i =0;i<mid;i++){
            if(nums1.empty()){
                pop_heap(nums2.begin(),nums2.end());
                nums2.pop_back();
            }else if(nums2.empty()){
                pop_heap(nums1.begin(),nums1.end());
                nums1.pop_back();                
            }else if(nums1.front()>=nums2.front()){
                pop_heap(nums1.begin(),nums1.end());
                nums1.pop_back();
            }else if(nums2.front()>nums1.front()){
                pop_heap(nums2.begin(),nums2.end());
                nums2.pop_back();
            }
        }
        if(total%2==0){
            int a,b;
            if(nums1.empty()){
                a=nums2.front();
                pop_heap(nums2.begin(),nums2.end());
                nums2.pop_back();
                b=nums2.front();
                return (double)(a+b)/2;
            }else if(nums2.empty()){
                a=nums1.front();
                pop_heap(nums1.begin(),nums1.end());
                nums1.pop_back();
                b=nums1.front();
                return (double)(a+b)/2;                
            }
            
            if(nums1.front()>=nums2.front()){
                a=nums1.front();
                pop_heap(nums1.begin(),nums1.end());
                nums1.pop_back();
            }else if(nums2.front()>nums1.front()){
                a=nums2.front();
                pop_heap(nums2.begin(),nums2.end());
                nums2.pop_back();                
            }
            
            if(nums1.empty()){
                b=nums2.front();
                return (double)(a+b)/2;
            }else if(nums2.empty()){
                b=nums1.front();
                return (double)(a+b)/2;
            }else if(nums1.front()>=nums2.front()){
                b=nums1.front();
                return (double)(a+b)/2;
            }else if(nums2.front()>nums1.front()){
                b=nums2.front();    
                return (double)(a+b)/2;
            }
        }else{
            if(nums1.empty()){
                return nums2.front();
            }
            if(nums2.empty()){
                return nums1.front();
            }
            return (nums1.front()>nums2.front()?nums1.front():nums2.front());  
        }
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浑此,一起剝皮案震驚了整個(gè)濱河市累颂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌尤勋,老刑警劉巖喘落,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異最冰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)稀火,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門暖哨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凰狞,你說我怎么就攤上這事篇裁。” “怎么了赡若?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵达布,是天一觀的道長。 經(jīng)常有香客問我逾冬,道長黍聂,這世上最難降的妖魔是什么躺苦? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮产还,結(jié)果婚禮上匹厘,老公的妹妹穿的比我還像新娘。我一直安慰自己脐区,他們只是感情好愈诚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著牛隅,像睡著了一般炕柔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上媒佣,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天汗唱,我揣著相機(jī)與錄音,去河邊找鬼丈攒。 笑死哩罪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巡验。 我是一名探鬼主播际插,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼显设!你這毒婦竟也來了框弛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤捕捂,失蹤者是張志新(化名)和其女友劉穎瑟枫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體指攒,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慷妙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了允悦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膝擂。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖隙弛,靈堂內(nèi)的尸體忽然破棺而出架馋,到底是詐尸還是另有隱情,我是刑警寧澤全闷,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布叉寂,位于F島的核電站,受9級(jí)特大地震影響总珠,放射性物質(zhì)發(fā)生泄漏屏鳍。R本人自食惡果不足惜勘纯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孕蝉。 院中可真熱鬧屡律,春花似錦、人聲如沸降淮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佳鳖。三九已至霍殴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間系吩,已是汗流浹背来庭。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留穿挨,地道東北人月弛。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像科盛,于是被迫代替她去往敵國和親帽衙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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