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