四个数出现一次的数字---JavaScript---异或解决方法

在一个数组中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

思路:我们把数组中所有数字的二进制表示的每一位都加起来。如果某一位的和能被3整除,
那么那个只出现一次的数字二进制表示中对应的那一位是0;否则就是1。

思路2:数组用逻辑与,异或的做法

function fun(){
	var arr=new Array(4);    //定义为四个数的数组
	for(var i=0;i<arr.length;i++){  
		arr[i]=prompt("请输入第"+(i+1)+"个数")  //接受输入
	}
console.log(arr)             //获得数组

当满足下标为1的数与两边数都不相等,则将数值通过异或赋值给下标为0的元素
下标为2和3的数值,只要不等于其中数组中任意一个数,则赋值给下标为0的元素
最终arr[0]为只出现 一次的数字

	arr[0]!=arr[1]&&arr[1]!=arr[2] &&(arr[0]^=arr[1],arr[1]^=arr[0],arr[0]^=arr[1])
	arr[1]!=arr[2]&&(arr[0]^=arr[2],arr[2]^=arr[0],arr[0]^=arr[2])
	arr[2]!=arr[3]&&(arr[0]^=arr[3],arr[3]^=arr[0],arr[0]^=arr[3])
	 console.log(arr)                              
	 console.log(arr[0]+"为四个数中只出现过一次的数")
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值