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

    xiaoxiao2022-07-07  206

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

    思路:我们把数组中所有数字的二进制表示的每一位都加起来。如果某一位的和能被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]+"为四个数中只出现过一次的数") }
    最新回复(0)