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 <= numsi <= 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;
}
相关推荐
初願致夕霞2 小时前
C++11:类型推导与完美转发复盘笔记
c++
小猪写代码2 小时前
C++中什么是类,什么是对象
c++
mmmmath_34 小时前
LeetCode.541.反转字符串II
数据结构·算法·leetcode
Navigator_Z4 小时前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
Escalating_xu5 小时前
【C语言数据类型和变量·上】从内置类型到变量模型:一次讲透 sizeof、signed/unsigned 与作用域
c语言
钓鱼的肝6 小时前
梳理(1-5)
c++·经验分享·笔记·算法·青少年编程
aramae6 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
参.商.6 小时前
【Day 53】76. 最小覆盖子串
leetcode·golang
jimy17 小时前
readelf 查看“派生类”的vtable符号
开发语言·c++
蒸蒸yyyyzwd7 小时前
cpp 选手秋招学习笔记 day37 面经学习
c++·八股