輸入描述:
每個測試輸入包含空格分割的n+1個整數,最後乙個整數為k值,n輸出描述:不超過100。
輸出n個整數裡最小的k個數。公升序輸出示例1
3 9 6 8 -10 7 -11 19 30 12 23 5
-11 -10 3 6 7第一種方法,用容器:
#include#include#includeusing namespace std;
int main()
int k=v[v.size()-1];
v.pop_back();
sort(v.begin(),v.end());
for(int i=0;i第二種方法用陣列:
#include#include using namespace std;
int main()
geshu=a[n-1];
set::iterator it;
it=s.find(geshu);
s.erase(it);
int k=0;
for(it=s.begin();it!=s.end();it++,k++)
system("pause");
return 0;
}
查詢n個數中最小的k個元素
求n個數中最小的k個元素 n很大,k相對較小 建立乙個k個元素的堆 再逐個插入,最壞情況時間複雜度為o nlgk include 求左右葉子 父結點的巨集定義 define left i i 2 define right i i 2 1 define parent i i 2 維持堆的性質 演算法原...
輸入n個整數,求出最小的K個數字
該問題我們可以先維護乙個大小為k的陣列karr,然後遍歷n個整數,當某個值比karr的最大的還要小時,就更新該陣列。如下 include include include include using namespace std void display int intarr,int length co...
刷題之路 最小的K個數
輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。最優方法可以做到n log k 做法就是使用堆排序,只維護乙個規模為k的大根堆,之後遍歷所有的數字,一旦後面數字比堆頂小,則交換兩數,並重新調整大根堆,遍歷完成後堆中元素就是最小的...