LeetCode136.只出现一次的数字

目录

  • 题目要求
  • 解题思路
  • 代码实现

题目要求

题目链接: 传送门

LeetCode136.只出现一次的数字_第1张图片

解题思路

这题让我们寻找数组中只出现一次的元素
这就让我一下子想到要用异或(^)来做这道题了,为什么呢?

因为异或运算,相同为0,不同为1
举个栗子: x = 10,将其转化为二进制,x = 1010 。
将x与x异或一下
x ^ x = 0
将x与0异或一下,可以得到
x ^ 0 = x(因为转化为二进制后得到的为一个二进制的数据流,0 ^ 0 = 0, 1 ^ 0 = 1)

所以只要数组中只要有出现两次元素,它们就会两两异或变成0,而只出现一次的相当于和0异或,还是它本身。

因此这个题我们可以采用这个方法,将数组中的所有数据均异或一下,得到的最后值就是数组中只出现一次的数字

代码实现

int singleNumber(int* nums, int numsSize)
{

    int k=nums[0];

    for(int i=1;i

你可能感兴趣的:(leetcode,算法,数据结构)