class
solution
return vec;
}}
class
solution
priorityqueue
queue =
newpriorityqueue
(new
comparator
()})
;for
(int i =
0; i < k;
++i)
for(
int i = k; i < arr.length;
++i)
}for
(int i =
0; i < k;
++i)
return vec;
}}
class
solution
int[
] ans =
newint
[k];
for(
int i =
0; i < k; i++
)return ans;
}}
class
solution
//最後乙個引數表示我們要找的是下標為k-1的數
return
quicksearch
(arr,
0, arr.length -
1, k -1)
;}private
int[
]quicksearch
(int
nums,
int lo,
int hi,
int k)
//否則根據下標j與k的大小關係來決定繼續切分左段還是右段。
return j > k ?
quicksearch
(nums, lo, j -
1, k)
:quicksearch
(nums, j +
1, hi, k);}
//快排切分,返回下標j, 使得比nums[j]小的數都在j的左邊,比nums[j]大的數都在j的右邊。
private
intpartition
(int
nums,
int lo,
int hi)
int t = nums[j]
; nums[j]
= nums[i]
; nums[i]
= t;
} nums[lo]
= nums[j]
; nums[j]
= v;
return j;
}}
劍指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...
劍指offer40 最小的k個數
問題描述 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,方法1 o nlogn def getleastnumbers input,k input.sort return input 4 a sorted input inpu...