50道演算法題(13 50)

2021-09-26 22:48:50 字數 1532 閱讀 5702

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。

示例:輸入:

[

1->4->5,

1->3->4,

2->6

]

輸出:

1->1->2->3->4->4->5->6
首先,暴力破解

listnode* mergeklists(vector& lists) 

}std::sort(longlist.begin(),longlist.end(),(auto x,auto y));

if (longlist.size() ==0)

for (size_t i=0;inext = longlist[i+1];

}longlist[longlist.size()-1]->next = null;

return longlist[0];

其次,參考昨天的演算法,始終將最小的數排在最後

class solution 

return prehead->next;}};

這裡函式沒有寫出來,但大致是這個思路

接下來是官方演算法,分治法

50道演算法題(1 50)

題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 ...

50道演算法題(2 50)

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0示例 2 nums1 1,2 n...

50道演算法題(5 50)

請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字...