如何理解利用按位异或来得到数组中不重复的项?

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

获取数组中只出现过一次的数字的算法,用到了XOR,但不太能理解

singleNumber([1,3,1,4,6,4,6,5,3])

[3, 3, 1, 4, 6, 4, 6, 5, 3]
[7, 3, 1, 4, 6, 4, 6, 5, 3]
[1, 3, 1, 4, 6, 4, 6, 5, 3]
[5, 3, 1, 4, 6, 4, 6, 5, 3]
[3, 3, 1, 4, 6, 4, 6, 5, 3]
[6, 3, 1, 4, 6, 4, 6, 5, 3]
[5, 3, 1, 4, 6, 4, 6, 5, 3]

只记得自身的XOR会得到0

犯罪嫌疑人X
浏览 457回答 2
2回答

慕容森

没意义,你只有假设整个数组,只有唯一一个奇数出现的数字。有这样的场景吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python