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;
}
相关推荐
m0_748240251 分钟前
C++ 游戏开发示例:简单的贪吃蛇游戏
开发语言·c++·游戏
Y unes6 分钟前
《i.MX6ULL LED 驱动实战:内核模块开发与 GPIO 控制》
linux·c语言·驱动开发·vscode·ubuntu·嵌入式
Summer_Uncle12 分钟前
【C++学习】指针
c++·学习
蜗牛沐雨1 小时前
详解C++中的字符串流
c++·1024程序员节
蜗牛沐雨1 小时前
详解C++中的流
c++·1024程序员节
scx201310041 小时前
20251025 分治总结
数据结构·c++·算法
m0_748240251 小时前
C++智能指针使用指南(auto_ptr, unique_ptr, shared_ptr, weak_ptr)
java·开发语言·c++
R-G-B2 小时前
【10】MFC入门到精通——MFC 创建向导对话框、属性页类、属性表类、代码
c++·mfc·创建向导对话框·创建属性页类·创建属性表类
AA陈超3 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-16 属性菜单 - 构建
c++·游戏·ue5·游戏引擎·虚幻
Lear3 小时前
C语言与C++在基础语法上的区别
c语言