美文网首页
Q136 Single Number

Q136 Single Number

作者: 牛奶芝麻 | 来源:发表于2018-02-28 16:33 被阅读5次

Given an array of integers, every element appears twice except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

解题思路:

这题看似简单,实则是一道比较有技巧的题目。

首先要求时间复杂度为 O(n),空间复杂度为 O(1)。刚开始用Python写了一个时间复杂度 O(n^2) ,空间复杂度 O(1) 的,果然有一个case没有通过。

技巧性的关键,在于明白两个相同的数,进行异或操作,结果为0。因此,我们将所有的数字全部进行异或,然后,相同的数字最后都被消除了,异或的结果也就是剩下的那个单独的数字,返回即可。

一句话总结:偶消奇不消。

Python实现:
class Solution:
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        for i in range(1, len(nums)):
            nums[0] ^= nums[i]   # 相等的数字异或相消为0,最后剩下单一的数字
        return nums[0]

a = [2,1,2,3,1]
b = Solution()
print(b.singleNumber(a)) # 3

相关文章

  • Q136 Single Number

    Given an array of integers, every element appears twice e...

  • 一篇文章搞懂面试中leetcode位操作算法题

    Single Number落单的数 落单的数 IISingle Number II Single Number I...

  • single number

    题目描述 给定一个整数数组,除了一个元素外,每个元素都会出现两次。找到那一个出现一次的元素。注意:时间复杂度O(n...

  • Single number

    用异或

  • Single Number

    题目要求找出在算法的时间复杂度为线性时间,且不占据额外的内存 下面讲解算法:该算法主要用到了位运算中的异或运算^,...

  • Single Number

    Single Number 今天是一道有关位运算的题目,来自LeetCode(#136),难度为Medium,Ac...

  • Single Number

    Problem Given an array of integers, every element appears...

  • Single Number

    Given an array of integers, every element appearstwiceexc...

  • Single Number

    Given an array of integers, every element appearstwiceexc...

  • Single Number

    按位亦或可求解,复杂度为O(n)

网友评论

      本文标题:Q136 Single Number

      本文链接:https://www.haomeiwen.com/subject/wjrutftx.html