看板 C_and_CPP 關於我們 聯絡資訊
假設今天給定一串整數陣列 內含數個不相等的數值 給定一個目標區間 假設0~500好了 印出不包含於陣列內容的數值 如何讓整體 CPU calculation、Memory allocation 消耗最少? 沒有想到一個好的演算法... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.58.160.1 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1434540498.A.68E.html ※ 編輯: VastThunder (61.58.160.1), 06/17/2015 19:28:45
CaptainH: 可以先sort嗎? 06/17 19:35
johnjohnlin: 感覺不用 sort? 06/17 20:21
johnhmj: 時間不考慮嗎? 06/17 20:40
VastThunder: 我也是覺得不需要sort 06/17 21:03
VastThunder: array={1,44,55,100,105,106,201,254,305,339,380} 06/17 21:04
uranusjr: 「整體 CPU calculation、Memory allocation 消耗最少」 06/17 21:07
uranusjr: 你要先定義這個需求, 不可能同時最佳化兩者 06/17 21:07
Hazukashiine: 看情況,但是大多不用 sort 會比較符合你的需求 06/17 21:14
MOONRAKER: 0-500隨便寫就好了 5e+06還差不多 06/17 21:15
MOONRAKER: 你給的陣列剛好就是sort好的當然馬不用sort 06/17 21:16
EdisonX: 兩個 loop 做 xor 06/18 00:49
EdisonX: for(i=0;i<=500;++i) msk^=i; 06/18 00:50
EdisonX: for(i=0;i<500;++i) msk^=ary[i]; 最後 msk 就是少的數. 06/18 00:51
EdisonX: 啊!我漏了!少的數可能不只一個... 那就用 bitwise 吧 06/18 00:52
EdisonX: 出現過的設 n-bit 為 1, 最後 polling 哪些 bit 為 0 06/18 00:53
anyoiuo: 這樣? https://ideone.com/qqLwng 06/18 13:31