Skip to content

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

Open
@0xbitboy

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个数。

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