找只出现一次的数字

时间:2022-07-22
本文章向大家介绍找只出现一次的数字,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

这是力扣网站的一道题,挺巧妙的,分享给大家。

0x01. 题目

  给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

0x02. 示例

输入: [2,2,1]
输出: 1
输入: [4,1,2,1,2]
输出: 4

0x03. 答案

  使用异或实现找数组里面只出现一次的数字。

int singleNumber(vector<int>& nums) {
    int single = 0;
    for (int num : nums) {
        single ^= num;
    }
    return single;
}

0x04. 关于异或

  • 满足交换律,如:
a ^ c ^ b 
<=> 
a ^ b ^ c
  • 任何数与0异或得任何数,如:
0 ^ n => n
  • 相同的数异或为0,如:
n ^ n => 0
  • 最后数组[4,1,2,1,2]异或分解:
4 ^ 1 ^ 2 ^ 1 ^ 2
=>
4 ^ 1 ^ 1 ^ 2 ^ 2
=>
4 ^ 0 ^ 0
=>
4

0x05. 关于更多

  题目出处:

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