Find the odd int

2018-11-21  本文已影响0人  Re_Vive

Question

在一个数字数组中返回只出现单次的
比如:

findOdd([20,1,-1,2,-2,3,3,5,5,1,2,4,20,4,-1,-2,5])  // 5
findOdd([1,1,2,-2,5,2,4,4,-1,-2,5])  // -1

Answer

一、forEach遍历
function findOdd(a) {
    let l = a.length
    let obj = {}
    a.forEach((val,idx) => {
        !obj[a[idx]] ? obj[a[idx]] = 1 : obj[a[idx]] += 1
    })
    for(let i in obj){
        if(obj[i] % 2 !== 0){
            return parseInt(i)
        }
    }
}
二、reduce
function findOdd(a){
    return a.reduce((a,b) => a^b)
}

第一种是很常规的解法,也是问题比较少的解法
但根据题目能想到第二种的真是惊为天人,使用异或运算,相等的值运算后都为0,双数值都会为0,只剩下一个单数值就是答案

上一篇 下一篇

猜你喜欢

热点阅读