力扣第1746题(关于哈希表的超简单练习题)

题目描述

给你一个整数数组 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

思路:

这道题主要是考察对哈希数组的简单运用,注意这里的所给数组范围为1到100之间,并且都是整数,那么我们是不是可以定义一个大小为101的数组,数组的下标代表这个数,而这个元素的值则代表这个数出现的次数,然后再把每个数组元素值等于1的相加,那么就可以求所给值了

int sumOfUnique(int* nums, int numsSize) {
     int a[101]={0};
     int i,sum=0;
     for(i=0;n<numSize;i++) //a[nums[i]] 代表的是nums[i]出现的次数
         a[nums[i]]++; //这里的nums[i]代表的是这个数在a中代表的下标(其实和a的下标是同一个数)
 for(i=0;i<numSize;i++)
    if(a[nums[i]]==1)
        sum+=nums[i];
     return sum;
 } 

上面这个函数的nums和numsSize代表的是对应所给数组和数组的大小,要返回的则是恰好出现一次的元素的和

注意:

第二次的for循环是把nums的元素循环了一遍,而不是a数组的元素,原因在于nums的长度在1到100之间,相较于a的100个元素可以很好减少循环次数(如果长度大于100用a数组的循环好一些),但是注意这里要求的是唯一元素,所以sum直接相加,如果是求为二甚至更多,记得不要忘记一些重复的元素相加(可以用a的循环)

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值