時間限制:1s 記憶體限制:128mb給n個整數,請按從大到小的順序輸出其中前m大的數。
每組測試資料有兩行,第一行有兩個數n,m(0 < n,m < 1000000),第二行包含n個各不相同,且都處於區間[-500000,500000]的整數。
對每組測試資料按從大到小的順序輸出前m大的數。
5 33 -35 92 213 -644
213 92 3
1、題目給出1s的執行時限,如果最壞情況下的時間複雜度在百萬級以內,即可。根據題目給出的資料,即便用o(nlogn)的快排,時間複雜度也到千萬級了。
題目中說「n個元素各不相同」,思考執行雜湊思想,利用乙個陣列分別統計每一種陣列是否出現過,其空間複雜度依舊在題目的限定範圍內。並且統計出現數字中較大的m個數字,也僅需從尾到頭遍歷這個陣列,時間複雜度仍在百萬級。
2、由於輸入資料**現了負數,所以不能直接把輸入資料當作陣列下標來訪問陣列元素,需將每乙個輸入的資料都加上乙個固定的偏移值,使輸入資料的[-500000,500000]區間對映到陣列下標的[0,1000000]區間。
3、根據輸出樣例,還要注意輸出的格式,最後乙個輸出資料後沒有空格。
#include #include #define offset 500000 //偏移量,用於補償實際數字與陣列下標之間的偏移
int hash[1000001]; //記錄每個數字是否出現,不出現為0,出現後標為1
王道機試指南NO 4Day Of Week
時間限制 1s 記憶體限制 32mb輸入乙個日期,要求輸出該日期為星期幾 9 october 2001 14 october 2001 tuesday sunday 1 日期類問題,先預處理出每個日期與原點日期 0年1月1日 之間的天數間隔,存入buf三維陣列。2 看到題目考慮兩個問題 今天星期幾?...
王道機試指南 P1
p1 結構體陣列排序 核心在於1.使用結構體,2,使用sort和對應的cmp 3.字串使用strcmp比大小 先建立乙個結構體用來存對應的數值 struct estu 100 bool cmp e a,e b intmain return0 p1 這道題的關鍵是在於,因為給定的值是乙個範圍的,所以可...
菜鳥的機試準備 王道機試指南 演算法筆記
字串雜湊 100000582 b 100000582 c 100000582 d 今天第幾天?清華 include include using namespace std int month tab 2 13 bool is leapyear int year intmain else 上邊的if ...