[LeetCode][Python]136. 只出现一次的数字

阿里云2000元红包!本站用户参与享受九折优惠!

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1
示例 2:

输入: [4,1,2,1,2]
输出: 4

思路:

  1. 还是根据异或运算,任何数与自身异或都是0,任何数与0异或还是自己,所以在列表中依次异或下去,会把重复的数字去掉,剩下的就是那个只出现依次的数
  2. Python的counter模块,可以查出各个元素的出现次数
  3. 如果使用Python的set运算,乘以2减去那个列表
  4. 使用hash table,查找 hash_table 中是否有当前元素的键,如果没有,将当前元素作为键插入 hash_table,最后, hash_table 中仅有一个元素,用 popitem 获得它
#! /usr/bin/env python
#coding=utf-8
class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        __dict = {}
        for e in nums:
            try:
                __dict.pop(e)
            except:
                __dict[e] = 1
        return __dict.popitem()[0]

你或许想:《去原作者写文章的地方

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论