Python 如何找出陣列中唯一重複的元素

2021-09-26 06:12:25 字數 1491 閱讀 5091

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...