Leetcode136 . 只出现一次的数字 (C语言)

非 Y 不嫁゛ 提交于 2019-11-29 06:08:50

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

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

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

示例 2:

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

算法思想:

 利用异或运算符(^)它的作用是两个数的二进制中的每一个比特位,形同为0,不同则为1.

 ^是异或,位运算的一种,相同为0不同为1
 a=3,二进制表示是00000011
 b=4,二进制表示是00000100
 a=a^b,a的值为:00000111
 b=b^a,b的值为:00000011,即是a的初值3
 a=a^b,a的值为:00000100,即是b的初值4

代码如下:

int singleNumber(int* nums, int numsSize) {
    
    int result = nums[0];
	for (int i = 1; i < numsSize; i++)
	{
		result ^= nums[i];
	}
	return result;
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!