輸入整數陣列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...