? 今日挑战
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。
示例 :
输入: [1,2,1,3,2,5]输出: [3,5]
注意:
结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?
先思考一下,后面我会给出一个解题思路~?

图来自网络
这道题和第 15 道题的解题思路是一样的。
1 )初始化一个字典
2 )如果数字已经存在,则从中剔除这个元素
3 )如果数字不存在,则从中新增这个元素
4 )最后返回还存留在字典中的元素,就是结果,转化为list返回即可。
Python实现:
# 只出现一次的数字 III
def singleNumber(nums):
# 初始化一个字典
hash_table = {}
for i in nums:
try:
# 如果数字已经存在,则从中剔除这个元素
hash_table.pop(i)
except:
# 如果数字不存在,则从中新增这个元素
hash_table[i] = 1
return list(hash_table.keys())
? 配图角色背景介绍
托尔(Thor,古挪威语:Þórr,较常见译名为索尔),日耳曼地区称他多纳尔(Donar),是古北欧神话中负责掌管战争与农业的神。托尔的职责是保护诸神国度的安全与在人间巡视农作,北欧人相传每当雷雨交加时,就是托尔乘坐马车出来巡视,因此称呼托尔为“雷神”。另外,托尔的勇敢善战在诸神与巨人间是非常有名的,托尔的力量相当巨大。在神话中甚至可以独自挑战巨人群,每当诸神被巨人们欺负或者攻击时,只要托尔一站出来立刻就让巨人族知难而退。除了托尔本身力量强大之外,“雷神之锤”更是让托尔所向无敌的宝贵武器,因此与诸神敌对的巨人族们相当畏惧托尔,只要托尔在诸神的一天巨人们几乎不敢对诸神们轻举妄动。