![LeetCode 1748 唯一元素的和[Map] HERODING的LeetCode之路,第1张 LeetCode 1748 唯一元素的和[Map] HERODING的LeetCode之路,第1张](/aiimages/LeetCode+1748+%E5%94%AF%E4%B8%80%E5%85%83%E7%B4%A0%E7%9A%84%E5%92%8C%5BMap%5D+HERODING%E7%9A%84LeetCode%E4%B9%8B%E8%B7%AF.png)
解题思路:
很容易想到两种思路,第一种用Map记录个数,然后遍历Map把数量为1的元素相加,代码如下:
class Solution {
public:
int sumOfUnique(vector& nums) {
unordered_map mp;
for(int& num : nums) {
mp[num] ++;
}
int ans = 0;
for(auto&[a, b] : mp) {
if(b == 1) {
ans += a;
}
}
return ans;
}
};
另一种思路是先加上,然后Map也记录,一旦重复就减去,当然要注意一旦出现三个及以上的情况就不要继续减了,代码如下:
class Solution {
public:
int sumOfUnique(vector& nums) {
unordered_map mp;
int ans = 0;
for(int& num : nums) {
if(mp[num] == 0) {
ans += num;
mp[num] = 1;
} else if(mp[num] == 1){
ans -= num;
mp[num] = 2;
}
}
return ans;
}
};
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)