码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Single Number

时间:2016-05-03 18:40:20      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

LeetCode解题之Single Number


原题

一个数组中除了一个数字出现过一次外,其余的数字都出现了两次,找出那个只出现一次的数字。

注意点:

  • 算法时间杂度要求为O(n)
  • 空间复杂度为O(1)

例子:

输入: nums = [1, 2, 3, 4, 3, 2, 1]

输出: 4

解题思路

非常常见的一道算法题,将所有数字进行异或操作即可。对于异或操作明确以下三点:

  • 一个整数与自己异或的结果是0
  • 一个整数与0异或的结果是自己
  • 异或操作满足交换律,即a^b=b^a

所以对所有数字进行异或操作后剩下的就是那个只出现一次的数字。

AC源码

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        result = nums[0]
        for i in nums[1:]:
            result ^= i
        return result


if __name__ == "__main__":
    assert Solution().singleNumber([1, 2, 3, 4, 3, 2, 1]) == 4

欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。

LeetCode Single Number

标签:

原文地址:http://blog.csdn.net/u013291394/article/details/51298527

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!