【剑指Offer】JZ56 数组中只出现一次的两个数字
JZ56 数组中只出现一次的两个数字
描述
一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
要求:空间复杂度 O(1),时间复杂度 O(n)
提示:输出时按非降序排列。
输入:
[1,4,1,6]
返回值:
[4,6]
说明:
返回的结果中较小的数排在前面
输入:
[1,2,3,3,2,9]
返回值:
[1,9]
# @param array int整型一维数组
# @return int整型一维数组
#
from typing import List
class Solution:
def FindNumsAppearOnce(self , array: List[int]) -> List[int]:
# write code here
# 哈希去重
res = []
dict = {}
i = 0
l = len(array)
while i < l:
dict[array[i]] = dict[array[i]]+1 if array[i] in dict else 1
i = i + 1
for j in dict:
if dict[j] == 1:
res.append(j)
if res[0] > res[1]:
tmp = res[0]
res[0] = res[1]
res[1] = tmp
return res
a = [1,4,1,6]
b = Solution()
r = b.FindNumsAppearOnce(a)
print(r)