题目:数组中有N+2个数,其中,N个数出现了偶数次,2个数出现了奇数次(这两个数不相等),请用O(1)的空间复杂度,找出这两个数。注:不需要知具体位置,只需找出这两个数。
分析:哈希表法。定义一个字典,把数组元素的值作为key,遍历整个数组,如果key值不存在,出现一次其值为1,出现两次其值为2。
def getNum(arr):
if arr is None or len(arr) <= 0:
return -1
hashTable = {}
i = 0
while i < len(arr):
if arr[i] in hashTable:
hashTable[arr[i]] = 2
else:
hashTable[arr[i]] = 1
i += 1
for k, v in hashTable.items():
if v == 1:
print(int(k))
if __name__ == "__main__":
arr = [3, 3, 5, 6, 8, 6, 5, 7, 7, 2, 2, 1]
getNum(arr)