劍指Offer系列40 最小的K個數

2021-10-10 22:11:27 字數 1272 閱讀 1575

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

方法一:排序

class

solution

return vec;}}

;

方法二:堆

class

solution

priority_queue<

int> q;

for(

int i =

0; i < k;

++i)

for(

int i = k; i <

(int

)arr.

size()

;++i)

}for

(int i =

0; i < k;

++i)

return vec;}}

;

方法三:快排

class

solution

}swap

(nums[i +1]

, nums[r]);

return i +1;

}// 基於隨機的劃分

intrandomized_partition

(vector<

int>

& nums,

int l,

int r)

void

randomized_selected

(vector<

int>

& arr,

int l,

int r,

int k)

int pos =

randomized_partition

(arr, l, r)

;int num = pos - l +1;

if(k == num)

else

if(k < num)

else

}public

: vector<

int>

getleastnumbers

(vector<

int>

& arr,

int k)

return vec;}}

;

劍指Offer系列40 最小的k個數

輸入整數陣列 arr 找出其中最小的 k 個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。pythonclass solution def getleastnumbers self,arr list int k int list int if k 0 re...

劍指offer40 最小的k個數

輸入n個整數,找出其中最小的k個數。注意 資料保證k一定小於等於輸入陣列的長度 輸出陣列內元素請按從小到大順序排序 樣例 輸入 1,2,3,4,5,6,7,8 k 4 輸出 1,2,3,4 思路1 用大頂堆儲存k個數,然後不斷的遍歷陣列,若是陣列中的數小於堆頂元素,則替換。實踐複雜度為o nlogk...

劍指offer40 最小的 K 個數

題目描述 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,思路 方法一 維護乙個大小為k的大頂堆,複雜度 o nlogk o k 特別適合處理海量資料 public class solution priorityqueuemax...