C/C++---------------LeetCode第1748.唯一元素的和

唯一元素的和

题目及要求

给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。

请你返回 nums 中唯一元素的 和 。

示例 1:

输入:nums = [1,2,3,2]

输出:4

解释:唯一元素为 [1,3] ,和为 4 。

示例 2:

输入:nums = [1,1,1,1,1]

输出:0

解释:没有唯一元素,和为 0 。

示例 3 :

输入:nums = [1,2,3,4,5]

输出:15

解释:唯一元素为 [1,2,3,4,5] ,和为 15 。

提示:

1 <= nums.length <= 100

1 <= nums[i] <= 100

哈希算法

思路:先遍历一次哈希表并进行计数,再遍历一次找出只出现一次的数,然后累加到sum里

时间复杂度:O(n)

空间复杂度:O(n)

cpp 复制代码
class Solution {
public:
    int sumOfUnique(vector<int>& nums) {
        unordered_map<int,int>hash;   
        int sum=0;
        for(int n:nums){    //遍历并计数
            ++hash[n];
        }
        for(int n:nums){
            if(hash[n]==1){      //找出只出现一次的数
                sum+=n;          //累加到sum
            }
        }
        return sum;
    }
};

暴力算法

思路:这个思路和哈希的思路基本上一样,题目规定了长<=100,所以这题用暴力算法也很快

cpp 复制代码
class Solution {
public:
    int sumOfUnique(vector<int>& nums) {
      int flag[101]={0},sum=0;
      for(int i=0;i<nums.size();++i){
          flag[nums[i]]++;
      }
      for(int i=0;i<nums.size();++i){
          if(flag[nums[i]]==1){
              sum=sum+nums[i];
          }
      }
        return sum;
    }
};

在main里使用

cpp 复制代码
int main() {
    Solution sol;   //Solution对象sol
    vector<int>nums = { 1,2,3,2 };
    int result = sol.sum(nums);    //调用
    cout << result << endl;
    return 0;
}
相关推荐
放荡不羁的野指针1 天前
leetcode150题-字符串
数据结构·算法·leetcode
苦藤新鸡1 天前
4.移动零
c++·算法·力扣
hetao17338371 天前
2026-01-04~06 hetao1733837 的刷题笔记
c++·笔记·算法
橘颂TA1 天前
【剑斩OFFER】算法的暴力美学——存在重复元素Ⅱ
算法·leetcode·哈希算法·散列表·结构与算法
cg50171 天前
力扣数据库——组合两个表
sql·算法·leetcode
灵哎惹,凌沃敏1 天前
FreeRTOS 任务上下文切换核心函数:xPortPendSVHandler详解
c语言·arm开发
2501_941798731 天前
面向微服务分布式事务补偿与最终一致性的互联网系统高可用设计与多语言工程实践分享
leetcode·模拟退火算法
liulilittle1 天前
XDP VNP虚拟以太网关(章节:一)
linux·服务器·开发语言·网络·c++·通信·xdp
Ralph_Y1 天前
多重继承与虚继承
开发语言·c++
bkspiderx1 天前
C++虚析构函数:多态场景下的资源安全保障
c++·析构函数·虚函数表·虚析构函数