找陣列中唯一重複的元素 hash

2021-09-29 19:57:28 字數 1562 閱讀 4464

#空間換時間法,雜湊表;key的位址loc(key)=f(key)---->f()為雜湊函式

deffinddup

(array):if

none

==array:

return-1

lens =

len(array)

hashtable =

dict()

i =0while ihashtable[i]=0

#初始化初始化雜湊表

i+=1 j =

0while jif hashtable[array[j]-1

]==0:

hashtable[array[j]-1

]=array[j]-1

else

:return array[j]

j+=1return-1

if __name__==

'__main__'

: array =[1

,4,2

,5,4

,3]#數字1~5放到含有6個元素的陣列中

print

(finddup(array)

)

#累加求和法

deffinddup

(array):if

none

==array:

return-1

sum=

0for i in array:

sum+=i

print

("陣列中元素的和為%d"

%sum

) sum_total =

0 lens =

len(array)

for i in

range(1

,lens)

: sum_total+=i

return

sum-sum_total

if __name__==

'__main__'

: array =[1

,4,2

,3,5

,4]print

(finddup(array)

)

#異或方法

deffinddup

(array)

: lens =

len(array)

i =0 result =

0for i in

range(0

,lens)

: result^

= array[i]

for i in

range(0

,lens)

: result^

=i return result

if __name__==

'__main__'

: array =[1

,4,2

,3,5

,4]print

(finddup(array)

)

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

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

找出陣列中唯一重複的數

題目 陣列a n 1至n 1這n 1個數存放在a n 中,其中某個數重複一次。寫乙個函式,找出被重複的數字。方法一 異或法。陣列a n 中的n個數異或結果與1至n 1異或的結果再做異或,得到的值即為所求。include include include include void xor finddup...

求陣列中唯一重複的數字

求陣列中唯一重複的數字 陣列a n 1至n 1存在a中,有乙個是重複的,找出這個數字。第一種方法 include int main void int i,sum 0,x for i 0 i 11 i x sum 1 10 10 2 陣列總和 減去1到10得和多出來的就是重複的 printf d n ...