比方說我們有n
數字數組:a = [4,8,2,7,7]
,所以我需要的「同一陣列」,但沒有重複的項目,所以一個想法是,採取a[n-1]
,並與a[n-2]
比較,如果a[n-2]
= a[n-1]
,然後a[n-2]
+ = 1,並重復這一過程n-1
次,直到得到沒有重複項陣列,但一般如果a[n]
>a[n+1]
所得到的陣列必須保持這個順序,同上如果a[n]
< a[n+1]
。 但是,這有一個問題,如果數組是a = [6,6,2,8,7]
,最後的比較會導致a = [7,6,2,8,7]
,現在a[0] = a[n-1]
。如何從數組中抑制重複的項目但保持順序?
有更好的選擇來做到這一點?想法?
除非你知道某些值(像它們總是這麼小),否則你不能在線性時間內這樣做,這正是你想要做的。要麼你選擇一種非常幼稚的方法(對於數組中的每個元素,檢查它是否等於結果數組中的任何元素;如果不是,則追加它)(需要二次時間和常量空間),或者保持排序(使用'O(n log n)'時間,但'O(n)'空間) – 2014-11-07 00:56:49