找出数组中出现奇数次的元素

题目

找出给定数组中出现奇数次的元素

示例

比如array=[1,2,3,4,3,2,1,5,5,6,6,6,6], 这里面4出现了一次。

分析

idea 1

可能会想到遍历循环,统计每个字母出现的次数

idea 2

能不能一层循环就判断出现偶数次还是奇数次?

Just Try

请你自动动手试一下:在线编程环境

想想有没有其他思路?

想想时间和空间复杂度,能否优化一下

真的做不到么?

let you think, think makes you happy!

参考答案

思路是这样,想一下 与或非 这些位运算符,是不是有个 异或 的操作。异或:位不同取1,位相同取0,参考 ~(按位非), &(与), |(或)以及^(异或)的二进制使用

那么,我们把所有数值取个异或,相同的数字就被消除了,偶数次数字就被消除了,剩下就是基数次出现的数字了。

function main(param) {
    let k = 0
    param.forEach( item => {
      k = k ^ item
    })
    console.show(k)
}

复制到我们的 在线编程 环境,看下结果哈。



请遵守《互联网环境法规》文明发言,欢迎讨论问题
扫码反馈

扫一扫,反馈当前页面

咨询反馈
扫码关注
返回顶部