1.hash法(字典法):空間換時間
def finddup(array):
if array == none:
return -1
lens = len(array)
hashtable = dict()
i = 0
while i時間和空間複雜度都是o(n)
2.累加求和法
def finddup(array):
if array == none:
return -1
suma = sum(array)
lens = len(array)
sumb = (lens-1)*lens/2
return int(suma - sumb)
if __name__ == '__main__':
array = [1, 3, 2, 1, 5, 4]
print(finddup(array))
時間複雜度o(n),空間複雜度o(1)
3.或異法
def finddup(array):
if array == none:
return -1
lens = len(array)
result = 0
i = 0
while i時間複雜度o(n),空間複雜度為0
4.資料對映法
def finddup(array):
if array == none :
return -1
lens = len(array)
i = 0
while true:
if array[i]>=lens :
return -1
if array[i]<0 :
break
array[i] *= -1
i = -1*array[i]
return i
時間複雜度o(n),空間複雜度為0
5.環形相遇法
def finddup(array):
if array == none :
return -1
slow = 0
fast = 0
while true :
fast = array[array[fast]]
slow = array[slow]
if fast == slow :
break
fast = 0
while true :
fast = array[fast]
slow = array[slow]
if fast == slow :
return slow
如何找出陣列中唯一的重複元素?
數字1到1000放在含有1001個元素的陣列中,其中只有唯一的乙個元素值重複,其他數字均只出現一次。設計乙個演算法,講重複元素找出來,要求每個陣列元素只能訪問一次。如果不使用輔助儲存空間,能否設計乙個演算法實現?首先在看到這個題的時候,要特別注意幾個條件 1.每個陣列元素只能訪問一次。如果可以訪問多...
python實現找出陣列中唯一的重複元素
題目描述 數字 l 1000放在含有 1001 個元素的陣列中,其中只有唯一的乙個元素值重複,其他數 字均只出現一次。設計乙個演算法,將重複元素找出來,要求每個陣列元素只能訪問一次。如 果不使用輔助儲存空間,能否設計 一 個 演算法實現?分析 計算機技術與數學本身是一家 拋開計算機專業知識不提,上述...
找出陣列中唯一的重複元素
問題 1 1000放在含有1001個元素的陣列中,只有唯一的乙個元素值重複,其它均只出現一次。每個陣列元素只能訪問一次,設計乙個演算法,將它找出來 不用輔助儲存空間,能否設計乙個演算法實現?include include include 根據異或法的計算方式,每兩個相異的數執行異或運算之後,結果為1...