【問題描述】
輸入n個整數,找出其中最小的k(k<=n)個不同數。例如輸入4,5,1,6,1,7,3,8這8個數字,則最小的4個數字是1,3,4,5。
【輸入形式】
每個測試案例包括2行:
第一行為2個整數n,k(1<=n,k<=200000),表示陣列的長度。
第二行包含n個整數,表示這n個數,陣列中的數的範圍是[0,1000 000 000]。
【輸出形式】
對應每個測試案例,輸出最小的k個數,並按從小到大順序列印(如果不存在k個不同的數,則按照實際數量進行輸出)。
【樣例輸入】
8 44 5 1 6 2 7 3 8
【樣例輸出】
1 2 3 4
、
#include#includeusing namespace std;
set >settest;
int main()
set >::reverse_iterator i=settest.rbegin();
for(d=0;dreturn 0;
}
求最小的K個數
方法一 利用快排的思想,複雜度為o n class solution input low pivot return low vector getleastnumbers solution vector input,int k else vector res input.begin input.beg...
找出陣列中最小的k個數
leetcode 面試題40.最小的k個數 快速排序,時間複雜度為nlogn,然後前k個元素就是最小的k個數 class solution 原理也是快速排序的原理,只不過增加了停止條件。不用完全排序而已。class solution int label quicksort arr,0,arr.len...
求最小的第K個數
演算法分析 除了排序。大小堆,還可以用排序的演算法。我們每次以乙個基準元素進行快速排序,排序完之後,看這個基準元素的位置是否為k位置,如果大於k,那麼說明第k 小的元素在基準元素的左邊。然後從右邊選取基準元素進行快排。如果小於k,演算法相反 include include include inclu...