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;
}
相关推荐
别来无恙2022 分钟前
算法设计学习4
c++·学习
wuqingshun3141595 分钟前
蓝桥杯 切割
数据结构·c++·算法·职场和发展·蓝桥杯
艾妮艾妮8 分钟前
C语言常见3种排序
java·c语言·开发语言·c++·算法·c#·排序算法
小王努力学编程10 分钟前
动态规划学习——回文子串系列问题【C++】
c++·学习·算法·leetcode·动态规划
charlie11451419133 分钟前
STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出
c语言·stm32·单片机·嵌入式硬件·gpio·数据手册
划水哥~34 分钟前
创建QMainWindow菜单栏
开发语言·c++·qt
矿渣渣35 分钟前
int main(int argc, char **argv)C语言主函数参数解析
c语言·开发语言
阿让啊38 分钟前
bootloader+APP中,有些APP引脚无法正常使用?
c语言·开发语言·stm32·单片机·嵌入式硬件
饕餮ing42 分钟前
C++的UDP连接解析域名地址错误
开发语言·c++·udp
JohnFF1 小时前
48. 旋转图像
数据结构·算法·leetcode