为了账号安全,请及时绑定邮箱和手机立即绑定

在线等!关于运算符^的一些疑问?

在线等!关于运算符^的一些疑问?

达令说 2019-06-18 09:30:33
题目描述给定一个包含0,1,2,...,n中n个数的序列,找出0..n中没有出现在序列中的那个数。相关代码varmissingNumber=function(nums){varres=nums.length;for(vari=0;i<nums.length;i++){res=res^(i^nums[i]);}returnres;};看到一位大神的答案,但是不太理解res=res^(i^nums[i]);的意思,查了^的解释,调试了程序,还是不太明白是怎么对比出来的,麻烦解答一下,谢谢
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

Bitwise_Operators#(按位异或)
varmissingNumber=function(nums){
varres=nums.length;
for(vari=0;ires=res^(i^nums[i]);
}
returnres;
};
首先异或不需要管顺序。假设数组为连续[1,2...,n]数组,则nums.length必然与数组当中的某个值相等,即n^nums.length为0,因为x^0为x,所以若数据连续,则必然有n-1与上诉过程相同逻辑。
反正就是消消乐的意思,假设nums为[1,2,3]则最后的结果为length异或每个值异或下标,也就是3^1^2^3^0^1^2。
PS:个人不建议使用这样的代码
                            
查看完整回答
反对 回复 2019-06-18
  • 2 回答
  • 0 关注
  • 290 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信