Skip to content

【leetcode】Q260只出现一次的数字III  #5

Description

@0xbitboy

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。

示例 :

输入: [1,2,1,3,2,5]
输出: [3,5]

https://leetcode-cn.com/problems/single-number-iii/

  1. 任何数与0进行异或都是自身
  2. 出现2次的数经过异或后都得到0抵消掉,剩下的就是单次出现的数。
  3. 由1和2 可以看出如果我们对数组的元素进行一次异或运算,最后得到的就是2个只出现一次的数的异或结果
  4. 在结果数中的任意一个bit位 表示 这2个数在这个bit位上是不一样的一个是0一个是1.
  5. 根据4,我们可以将这个数组进行分组,把这个位置上为1的分为一组,为0的分为1组,这样就可以把这个2个数分表落到2组中。
  6. 分表对这2组进行异或运算得到的2个数就是所求的2个数。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions