找出数组中出现奇数次的元素
题目
找出给定数组中出现奇数次的元素
示例
比如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)
}