美文网首页
数组中数字出现的次数

数组中数字出现的次数

作者: 7赢月 | 来源:发表于2020-05-05 15:16 被阅读0次

题目描述

https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/


// 数组中出现的次数
func singleNumbers(nums []int) []int {
    if len(nums) < 2 {
        return []int{}
    }
    var c, k int
    for _, v := range nums {
        c ^= v
    }
    // 找到第一个1位
    var i = 1
    for i&c == 0 {
        i = i << 1
    }
    c = 0
    for _, v := range nums {
        if i&v == 0 {
            c ^= v
            continue
        }
        k ^= v
    }
    return []int{c, k}
}

思路

因为是查找只出现一次的两个数,必须知道的是两个进行异或后是等于0的;首先对全量进行异或,得出两个单独出现的数的异或,然后依照的这个数的任意一位,对全量数据进行分类,为什么要对上面数的任意以为,为了保证能把这两个单独出现的数分在不同数组里;这样再对每个数进行异或就OK了!

相关文章

网友评论

      本文标题:数组中数字出现的次数

      本文链接:https://www.haomeiwen.com/subject/zhmmghtx.html