leetcode:136. 只出现一次的数字(找单身狗)

一、题目:

leetcode:136. 只出现一次的数字(找单身狗)_第1张图片

 

函数原型:int singleNumber(int* nums, int numsSize)

参数解释:

int* nums是接收数组名的指针

int numsSize是数组元素个数

返回值是只出现过一次的数字(单身狗)

二、思路:

根据题目要求,使用的算法只使用常量额外的空间,即空间复杂度为O(1),算法中我们不能使用额外的数据结构,只能使用一些额外的变量。

由此我们要想到位运算,首先要学会几个位运算法则:

1.x异或0=x

2.x异或x=0

3.x异或y异或=z异或x异或z(交换律)

所以我们只要将给出的数组中所有元素都异或起来,那么出现两次的数字异或结果为0,只剩下0和出现一次的数字异或,由运算法则1得最终结果就是出现一次的数字。

三、代码:

int singleNumber(int* nums, int numsSize){
    int result=0;
    for(int i=0;i

你可能感兴趣的:(leetcode刷题训练营,leetcode,算法)