博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode0136. 只出现一次的数字
阅读量:300 次
发布时间:2019-03-03

本文共 547 字,大约阅读时间需要 1 分钟。

一. 题目
  1. 题目

    在这里插入图片描述

  2. 示例

    在这里插入图片描述

二. 方法一: hash表
  1. 解题思路

    统计每个元素出现的次数, 然后找出出现次数为1的元素即可

  2. 解题代码

    def singleNumber(self, nums: List[int]) -> int:    map1 = collections.Counter(nums)    for k in map1:        if map1[k] == 1:            return k
  3. 分析

    时间复杂度: O(n)
    空间复杂度: O(n)

三. 方法二: 位运算
  1. 解题思路

    1. 异或的性质

      两个数字异或的结果a^b是将 a 和 b 的二进制每一位进行运算,得出的数字。 运算的逻辑是: 如果同一位的数字相同则为 0,不同则为 1

    2. 异或的规律

      1. 任何数和本身异或则为0

      2. 任何数和 0 异或是本身

      3. 异或运算满足交换律,即:a ^ b ^ c = a ^ c ^ b

  2. 解题代码

    def singleNumber(self, nums: List[int]) -> int:    result = 0    for ele in nums:        result ^= ele    return result
  3. 分析

    时间复杂度: O(n)
    空间复杂度: O(1)

转载地址:http://fium.baihongyu.com/

你可能感兴趣的文章