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

数组中数字出现的次数

作者: 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