使用 deque 來存儲資料,但是會存到同樣的數字,所以要再開一個陣列來紀錄每一種數字出現的次數。因為在 deque 中刪除資料也會耗費時間,所以要盡可能減少刪除資料的次數。
當陣列中紀錄收到的數字並沒有在 deque 中,就要將該數字存到 deque 中,這邊要使用二分插入法來尋找合適的地方做插入,這樣就可以節省排序的時間。如果收到的數字已經存在於 deque 中,則將這個數字的陣列值 +1。
當需要刪除 deque 中的資料時,先確認要刪掉的數字在陣列中的值是否為 1,如果是的話就代表需要在 deque 中刪掉,如果是要刪掉第一個資料就是 pop_front(),最後一個資料就是 pop_back()。如果陣列值不是 1 就代表不需要刪資料,只需要將陣列值 -1 即可。