剑指offer——python【第40题】数组中只出现一次的数字

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。

思路

和那道字符串里面第一次出现唯一字符的题目类似,使用count计数方法;另外百度了一下发现还可以用collections模块的Counter方法,把列表值和对应的个数组成一个字典

 方法一:

class Solution:
    # 返回[a,b] 其中ab是出现一次的两个数字
    def FindNumsAppearOnce(self, array):
        # write code here
        targets = []
        for num in array:
            if array.count(num)==1 and num not in targets:
                targets.append(num)
        return targets

方法二:

import collections
class Solution:
    # 返回[a,b] 其中ab是出现一次的两个数字
    def FindNumsAppearOnce(self, array):
        # write code here
        targets = []
        dic = collections.Counter(array)
        for key,value in dic.items():
            if value < 2:
                targets.append(key)
        return targets

 

posted @ 2018-09-01 09:54  嶙羽  阅读(1407)  评论(0编辑  收藏  举报