【python3】leetcode 136. Single Number (easy)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/maotianyi941005/article/details/85080895

136. Single Number (easy)

Given a non-empty 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?

Example 1:

Input: [2,2,1]
Output: 1

Example 2:

Input: [4,1,2,1,2]
Output: 4

1 没考虑线性时间和without  using extra memory

class Solution:
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        count = collections.Counter(nums)
        for k in count.keys():
            if count[k] == 1:
                return k

Runtime: 40 ms, faster than 99.17% of Python3 

2 记录一个solution利用异或的解法

时间O(n),空间O(1)

Concept

  • If we take XOR of zero and some bit, it will return that bit
    • a⊕0 = a⊕0=a
  • If we take XOR of two same bits, it will return 0
    • a⊕ a = a⊕a=0
  • a⊕b ⊕ a = (a ⊕ a) ⊕b = 0 ⊕ b = b

So we can XOR all bits together to find the unique number.

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

猜你喜欢

转载自blog.csdn.net/maotianyi941005/article/details/85080895
今日推荐