设为首页 加入收藏

TOP

leadcode的Hot100系列--136. 只出现一次的数字
2019-07-02 14:11:56 】 浏览:29
Tags:leadcode Hot100 系列 --136.只 出现 一次 数字

因为之前刚写了461号题目,这个题目与那个很相似,
461号题目用异或来算两个不一样的部分,
那这个题目需要排除一样的部分,并找到不一样的部分。
那么可以再利用一下异或的特性:
1、相同为0,所以,a ^ a = 0。
2、不同为0,所以,0 ^ b = b。
所以,假设数组里面的数分别就是 a,a,b,
---> a ^ a ^ b = b,那么b就是要找的那个不一样的数字。
(异或的最终结果与异或的顺序无关,即 a ^ b ^ c = a ^ c ^ b = b ^ c ^ a )。
附上代码:

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

注:这里没有定义一个新变量,而使用nums[0]作为返回值,是为了节省一点执行用时(少了一次计算),少消耗点内存。
如果哪里可以再节省执行用时的,还请赐教!谢谢!




编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇leadcode的Hot100系列--226. 翻转.. 下一篇leadcode的Hot100系列--461. 汉明..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }