前言:
本以為我在d194 的解法,在這題不適用,結果最後還是可以ac
STL 的 set容器真的太強大了
我解這題的想法如下
以此範例為例,有5個數字
一開始集合的元素為0個(因為都沒有選數字),所以我們加入陣列第一個元素到集合中變成下圖
(集合中現在有元素 1 了)
如果接下來遇到陣列的元素中arr[1] arr[2]...,集合都沒有出現同樣的元素,我們就可以把該數字加到集合中
所以變成如下
(集合中有元素 1 2 3)
如果遇到陣列的元素中(arr[3] = 2),集合已經存在該元素,則我們就從陣列的前端開始找是集合的哪個元素與arr[3]相同
找元素的時候如果陣列前端的元素與arr[3]不同就從集合中踢出
(arr[0]被踢出集合,arr[1]和arr[3]相同所以停止搜尋,現在集合的元素為 3 2)
大致想法就是這樣
然後答案就是集合元素最多時的個數
集合記得用STL的set來完成,當然你也可以自己寫一個集合的資料結構,但搜尋集合元素時不可用循序搜尋(就是暴力搜尋),否則一定會超時...