佚名通过本文主要向大家介绍了二维数组怎么理解,三维数组怎么理解,数组的理解,利用数组处理批量数据,利用数组求和等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:如何理解利用按位异或来得到数组中不重复的项?
描述:
解决方案1:
描述:
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
解决方案1:
没意义,你只有假设整个数组,只有唯一一个奇数出现的数字。有这样的场景吗?
解决方案2:- a^a=0
- 0^a=a
- 异或满足交换率和结合率
因此a^b^c^b^c=a^(b^b)^(c^c)=a