劍指 39,最小的k個數

2021-10-03 13:39:51 字數 836 閱讀 7974

題目描述

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

思路:

1,維護乙個小頂堆。最後依次彈出四個數字。

2,基於快排的思想,排序到第k個就返回。

快排:先固定乙個哨兵,然後從high和low開始比。遇到a[high] 《哨兵的就賦值給小的。然後low++;最後看low和high相等否

**:

class

solution

} input.

size()

return res;

getthenumber

(input,

0,size,k)

;for

(int i=

0;i) res.

push_back

(input[i]);

return res;

}private

:void

getthenumber

(vector<

int>

&num,

int l,

int r,

int k)

num[low]

=sentry;

if(low+

1==k)

return

;else

if(low+

1>k)

getthenumber

(num,l,low-

1,k)

;else

}}

劍指offer 最小k個數

1.題目 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,2.方法 1 基於堆排序演算法,構建最大堆。時間複雜度為o nlogk 2 如果用快速排序,時間複雜度為o nlogn 3 如果用插入排序,時間複雜度為o n 2 3.演...

劍指offer 最小的K個數

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 10 4 題目描述 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,解析 基於插入排序的思想可以想到使用乙個長度為k的排序陣列儲存最小的k個元素,複雜度o nk 基於...

《劍指offer》最小的K個數

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,輸入給整數陣列,和k 找出其中最小的k個數 class solution 1 先用插入排序對陣列中數進行排序。2 取出有序陣列中最小的kge。附 這只是乙個比較簡單的方法。如果考慮...