#空間換時間法,雜湊表;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 ...