leetcode 练级 - 只出现一次的数字

用户头像
幸福三寸日光
关注
发布于: 2020 年 05 月 24 日

题目

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



说明:

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



示例 1:

输入: [2,2,1]

输出: 1



示例 2:

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

输出: 4



来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/single-number



解题思路

异或运算的运用,很巧妙,数组中相同的数异或后都变为0了,余下的一个数与0异或还是这个数本身



异或运算的规律如下:

交换律:a ^ b ^ c <=> a ^ c ^ b

任何数与0异或为任何数 0 ^ n => n

相同的数异或为0: n ^ n => 0



代码实现

var singleNumber = function(nums{
    let result = 0
    for (let i = 0; i < nums.length; i++) {
         result = result ^ nums[i];   
    }
    return result
};



发布于: 2020 年 05 月 24 日 阅读数: 34
用户头像

幸福三寸日光

关注

但行好事,莫问前程;不忘初心,方得始终 2019.03.21 加入

每天进步一点点,做最好的自己

评论

发布
暂无评论
leetcode练级-只出现一次的数字