在一个数组中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
思路:我们把数组中所有数字的二进制表示的每一位都加起来。如果某一位的和能被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]+"为四个数中只出现过一次的数")
}