136.只出现一次的数字

2021/12/31 23:37:07

本文主要是介绍136.只出现一次的数字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.Go

 方法1:哈希

func singleNumber(nums []int) int {
    dic:=make(map[int]int)
    for _,v:=range nums{
        dic[v]++
    }
    for k,v:=range dic{
        if v==1{
            return k
        }
    }
    return 0
}  

方法2:异或  这方法仅使用其他数出现偶数次 只有一个数出现奇数次

异或性质:

1.任何数和0做异或运算,结果任然是这个数 :a^0=a

2.任何书与自身做异或运算,结果是0 :a^a=0

3.异或满足交换律和结合律:a^b=b^a   a^(b^c)=(a^b)^c

func singleNumber(nums []int) int {
    single := 0
    for _, num := range nums {
        single ^= num
    }
    return single
}  

2.C++

方法1:哈希

class Solution {
public:
    //哈希
    int singleNumber(vector<int>& nums) {
        unordered_map<int,int>mm;
        for (int num:nums){
            mm[num]++;
        }
        for (auto m:mm){
            if (m.second==1){
                return m.first;
            }
        }
        return 0;
    }
};

 方法2:异或

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ans=0;//必须赋初值为0
        for (int num:nums){
            ans^=num;
        }
        return ans;
    }
};

  

 



这篇关于136.只出现一次的数字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程