1.题目
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
2.思路
解法一:用count方法。
解法二:不用内置count方法。
3.代码
解法一:count()
# -*- coding:utf-8 -*-
class Solution:
# 返回[a,b] 其中ab是出现一次的两个数字
def FindNumsAppearOnce(self, array):
# write code here
res = []
for i in array:
if array.count(i) == 1:
res.append(i)
return res
解法二:不用count()版本
# -*- coding:utf-8 -*-
class Solution:
# 返回[a,b] 其中ab是出现一次的两个数字
def FindNumsAppearOnce(self, array):
# write code here
array_set = list(set(array)) # 去重处理,得到去重后的列表
array_len = len(array_set)
b = [0] * array_len # 定义两个新列表,b的索引号和array_set相同,里面装数字出现的次数
c = [] # c里面仅仅装两个出现一次的数字的索引,这个索引同b和array_set对应,因此可以根据索引在array_set数组中找到对应的数字。
for i in array:
b[array_set.index(i)] += 1
for index, nums in enumerate(b):
if nums == 1:
c.append(index)
return [array_set[c[0]], array_set[c[1]]]