劍指 Offer 40 最小的k個數

2021-10-19 10:19:16 字數 1419 閱讀 9140

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...