Leetcode23-合并K個排序鏈表(未完成)

題目:合并K個排序鏈表

解答:

方法一:合并前兩個鏈表,然后插入到后面,循環(huán)到只剩一個鏈表

ListNode* mergeKLists(vector<ListNode*>& lists) {
        if(lists.empty())
        {
            return nullptr;
        }
        while(lists.size()>1)
        {
            lists.push_back(mergeTwoLists(lists[0],lists[1]));
            lists.erase(lists.begin());
            lists.erase(lists.begin());
        }
        return lists.front();
    }
    ListNode* mergeTwoLists(ListNode* l1,ListNode* l2)
    {
        if(l1 == nullptr) return l2;
        if(l2 == nullptr) return l1;
        ListNode* head = nullptr;
        if(l1->val > l2->val)
        {
            head = l2;
            l2 = l2->next;
        }else{
            head = l1;
            l1 = l1->next;
        }
        ListNode* p = head;
        while(l1!=nullptr && l2!=nullptr)
        {
            if(l1->val > l2->val)
            {
                p->next = l2;
                l2 = l2->next;
            }else{
                p->next = l1;
                l1 = l1->next;
            }
            p = p->next;
        }
        p->next = l1 ? l1 : l2;
        return head;
    }

時間復雜度:nlogk;空間復雜度:n//先插入新鏈表再刪除舊鏈表-最壞是只有兩個鏈表

注:時間復雜度分析——每一趟合并的時間復雜度是n,共進行l(wèi)ogk趟


方法二:利用優(yōu)先隊列或堆

待補充
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一些概念 數(shù)據(jù)結構就是研究數(shù)據(jù)的邏輯結構和物理結構以及它們之間相互關系,并對這種結構定義相應的運算,而且確保經(jīng)過這...
    Winterfell_Z閱讀 6,603評論 0 13
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,301評論 0 52
  • 早上去上早讀,兒子吹風扇好蹬被子,只能把被子中間蓋在他身上,這樣他往哪邊滾都能裹著被子的邊緣,其實這也并不絕...
    深海碧玉閱讀 1,368評論 0 1
  • 早晨四點多醒來,收拾好來到火車站,要坐五點二十的車去太原,結果晚點了一個多小時,在休息區(qū)看到很多學生,他們應該起的...
    處處1閱讀 369評論 0 1
  • 古人寫兒童的古詩算比較少,但無一例外的,小兒都是一群可愛的精靈:有專注釣魚、怕得魚驚不應人的蓬頭稚子;有一放早學,...
    停云聽風閱讀 381評論 4 5

友情鏈接更多精彩內(nèi)容