这两个题与136类似。
电路的方法有点难以理解,用哈希表绰绰有余。
137.给你一个整数数组
nums
,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
class Solution {
public:
int singleNumber(vector<int>& nums) {
unordered_map<int,int>hp;
for(auto& x:nums)++hp[x];
for(auto& [a,b]:hp){if(b==1)return a;}
return -1;
}
};
260.给定一个整数数组
nums
,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按任意顺序返回答案。
class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
unordered_map<int,int>hp;
vector<int>ans;
for(auto& x:nums)++hp[x];
for(auto& [a,b]:hp){if(b==1)ans.emplace_back(a);}
return ans;
}
};
都用哈希表法,这里新学了一种遍历哈希表的方法,就是用键值对,也就是说,这里用的是中括号,分别代表了key与value。