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;
}
相关推荐
AA陈超16 分钟前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-18.生成火球术
c++·游戏·ue5·游戏引擎·虚幻
wxin_VXbishe26 分钟前
springboot居家养老管理系统-计算机毕业设计源码55953
java·c++·spring boot·python·spring·django·php
ULTRA??37 分钟前
归并排序算法实现,kotlin,c++,python
c++·python·kotlin
deng-c-f42 分钟前
C/C++内置库函数(5):值/引用传递、移动构造、以及常用的构造技巧
开发语言·c++
qq_3106585142 分钟前
mediasoup源码走读(十)——producer
服务器·c++·音视频
Tipriest_1 小时前
C++ Python使用常用库时如何做欧拉角 ⇄ 四元数转换
c++·python·四元数·欧拉角
小尧嵌入式1 小时前
C语言中的面向对象思想
c语言·开发语言·数据结构·c++·单片机·qt
fpcc1 小时前
跟我学C++中级篇——循环展开的分析
c++·优化
一杯美式 no sugar1 小时前
数据结构——单向无头不循环链表
c语言·数据结构·链表
埃伊蟹黄面1 小时前
算法 --- hash
数据结构·c++·算法·leetcode