#42058: C++詳解-Deque


toseanlin@gmail.com (Dr. SeanXD)

學校 : 康橋雙語學校
編號 : 158065
來源 : [24.147.249.5]
最後登入時間 :
2024-10-28 09:54:40
c421. pA 雲端列印 -- 104學年度全國資訊學科能力競賽 | From: [24.147.249.5] | 發表日期 : 2024-09-23 11:25

使用 deque 來存儲資料,但是會存到同樣的數字,所以要再開一個陣列來紀錄每一種數字出現的次數。因為在 deque 中刪除資料也會耗費時間,所以要盡可能減少刪除資料的次數。

當陣列中紀錄收到的數字並沒有在 deque 中,就要將該數字存到 deque 中,這邊要使用二分插入法來尋找合適的地方做插入,這樣就可以節省排序的時間。如果收到的數字已經存在於 deque 中,則將這個數字的陣列值 +1。

當需要刪除 deque 中的資料時,先確認要刪掉的數字在陣列中的值是否為 1,如果是的話就代表需要在 deque 中刪掉,如果是要刪掉第一個資料就是 pop_front(),最後一個資料就是 pop_back()。如果陣列值不是 1 就代表不需要刪資料,只需要將陣列值 -1 即可。

 

範例程式碼

 
ZeroJudge Forum