其他分享
首页 > 其他分享> > 136.只出现一次的数字

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;
    }
};

  

 

标签:一次,return,数字,nums,int,singleNumber,异或,num,136
来源: https://www.cnblogs.com/wustjq/p/15754662.html