劍指Offer之數組中重複元素 五種解法

劍指Offer之數組中重複元素 五種解法

題目描述

在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。

數組中某些數字是重複的,但不知道有幾個數字是重複的。

也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。

例如,如果輸入長度為7的數組{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2。


下面給出五種解法:

思路一:利用字符串函數

劍指Offer之數組中重複元素 五種解法

時間複雜度 O(n)

思路二:利用HashMap用空間換時間(推薦這個)

劍指Offer之數組中重複元素 五種解法

時間複雜度 O(n)

思路三:排序後從前往後找

劍指Offer之數組中重複元素 五種解法

時間複雜度 O(nlogn)

思路四:利用計數排序類似思想(推薦這種)

注意題目裡說“所有數字都在0到n-1的範圍內”

劍指Offer之數組中重複元素 五種解法

時間複雜度 O(n)

思路五:採用異或

劍指Offer之數組中重複元素 五種解法

時間複雜度 O(n^2)


分享到:


相關文章: