description
經過長時間的籌備工作,在jourk,ronny,plipala,阿長,阿沈等人的努力下,dm實驗室建立起自己的系列**,其中包括三個大板塊:dmoj首頁、dmoj論壇、dmoj部落格。
作為乙個大型的**,資料的加工處理需要用到很多演算法系統模組,通過這些模組對系統主資料庫進行修改。因此,在構建dmoj系列**的過程中,編寫了乙個龐大的資料統計系統,其中包括乙個尋找第k大數字的模組,對於乙個資料庫來說,這樣乙個模組的重要性不容置疑。但是,由於在修改**的過程中,這個模組被不慎刪掉了,dmoj找到了聰明的你,希望你能幫dmoj重寫這個模組。
對於輸入資料,你將按資料要求找出n個數字中的第k大數字。
關於第k大數字的解釋:對於乙個數字序列,計算該數字序列第k大數字,一種可行但效率不高的方法是,首先剔除數字序列中重複的數字,然後通過某種排序演算法,獲得剔除重複數字後的數字序列從大到小排序的數字序列,然後取從大到小排序的數字序列的第k位的數字。從另乙個角度,題目中的第k大數字即是不計入數字序列中數字重複出現的部分,對於數字重複出現的情況,應該認為該數字只出現一次。
現在請聰明的你嘗試設計一種可行且效率更高的方法來解決這個問題。
input
輸入資料一共有三行。
第一行有乙個正整數n(n<=10000000),表示一共給出多少個數字。
第二行有乙個正整數k(k<=10000000),表示要求你找出第k大數字。
第三行有n個整數,給出n個數字。對於每個整數i,均滿足-10000000<=i<=10000000。
output
輸出檔案共一行,包含乙個整數,表示n個數字中第k大數字是多少。
sample input
copy sample input to clipboard
3sample output22006 2007 2008
2007
#include#include#includeusing namespace std;const int max = 20000001;
bool visited[max];
class cmp
};int main()
}cout<
return 0;
}
尋找第k大數字
sicily description 經過長時間的籌備工作,在jourk,ronny,plipala,阿長,阿沈等人的努力下,dm實驗室建立起自己的系列 其中包括三個大板塊 dmoj首頁 dmoj論壇 dmoj部落格。作為乙個大型的 資料的加工處理需要用到很多演算法系統模組,通過這些模組對系統主資料...
牛客 尋找第k大數字
有乙個整數陣列,請你根據快速排序的思路,找出陣列中第k大的數。給定乙個整數陣列a,同時給定它的大小n和要找的k k在1到n之間 請返回第k大的數,保證答案存在。示例1 1,3,5,2,2 5,32public class findkth 遞迴尋找陣列中第k大的元素 private int find ...
分治演算法 尋找第k大數
問題描述 給定線性序集中n個元素和乙個整數k,1 k n,要求找出這n個元素中第k大的元素,這裡給定的線性集是無序的 其實這個問題很簡單,直接對線性序列集qsort,再找出第k個即可。但是這樣的時間複雜度就是qsort的時間複雜度o nlogn 有沒有更快的方法呢?看到網上有一種解法是採取了快排的思...