python实现找出数组中出现奇数次的数
题目描述:
数组中有N+2个数, 其中, N个数出现了偶数次, 2个数出现了奇数次(这两个数不相等〉,请用 0(1)的空间复杂度,找出这两个数 。 注意 : 不需要知道具体位置,只需要找出这两 个 数。
字典法
对于本题而言,定义一个字典,把数组元素的值作为 key,遍历整个数组,如果 key 值不
存在, 则将 value 设为 1,如果 key 值己经存在,则翻转该值(如果为 0,则翻转为 l;如果 为 l,则翻转为 0),在完成数组遍历后,字典中 value为 1 的就是出现奇数次的数。
def get2Num(arr):
if arr==None or len(arr)<1:
print('参数不合理')
return
dic=dict()
i=0
while i
if arr[i] not in dic:
dic[arr[i]]=1
else:
dic[arr[i]]=0
i+=1
for k,v in dic.items():
if v==1:
print(int(k))
if __name__=='__main__':
arr=[3,5,6,6,5,7,2,2]
get2Num(arr)
异或法
O(n)。 但是申请了额