劍指offer 29 最小的K個數

2021-09-24 15:08:53 字數 600 閱讀 6386

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。

最簡單容易想到的就是先排序,然後輸出前k個數即可。但是這樣明顯時間複雜度比較高。也可以使用另外的方法,具體不再詳述。

class solution 

for(int i = 0; i < input.size(); i++)

else

for(int j = k - 1; j > 0; j--)

if(result[k-1] > input[i])}}

return result;

}private:

void headadjust(vector&input, int parent, int length)

if(temp >= input[child])

input[parent] = input[child];

parent = child;

child = 2 * parent + 1;

}input[parent] = temp;

}};

4、相關知識點

一些優化的計算方法。

劍指Offer (29)最小的k個數

題目描述 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。實現如下 測試用例中給出的返回值是有序的。嘖嘖。找到序列中最小的k個數,利用set,對數字進行insert或erase 紅黑樹中查詢 插入 刪除操作都為 o logk 最...

劍指offer 29 最小的K個數

題目 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,思路分析 簡單思路 先快排,再取數 coding utf 8 class solution def getleastnumbers solution self,tinput,...

劍指Offer 29 最小的k個數

目錄 基礎補充 解法一 輸入陣列排序,然後取前k個 解法二 基於partition函式 解法三 最大堆 最小堆 3.1 時間複雜度o nlogn 空間複雜度o n 3.2 時間複雜度o nlogk 空間複雜度o k 解法四 紅黑樹 multiset集合 python排序實現 vector的使用方法 ...