您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页leetcode:136. 只出现一次的数字(找单身狗)

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

来源:叨叨游戏网

二、思路:

根据题目要求,使用的算法只使用常量额外的空间,即空间复杂度为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<numsSize;i++)
    {
        result^=nums[i];
    }
    return result;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务