当前位置:   article > 正文

LeetCode刷题 | 唯一元素的和_给定一个整数数组nums,数组中唯一元素是那些只出现恰好一次的元素,请返回nums数组

给定一个整数数组nums,数组中唯一元素是那些只出现恰好一次的元素,请返回nums数组

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

思路一:构建哈希表,两次循环,第一次循环将nums数组中的数放入哈希表中,第二次循环将哈希表中个数为0的项相加并输出结果ans;

int SumOnlyOne(std::vector<int>& nums)
{
	int brr[101] = { 0 };
	int ans = 0;
	for (int i = 0; i < nums.size(); i++)
	{
		brr[nums[i]]++;//构建哈希表
	}
	for (int j = 0; j < nums.size(); j++)
	{
		if (brr[nums[j]] == 1)
		{
			ans  += nums[j];
		}
	}
	return ans;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

思路二:哈希表,一次for循环,从开始加,个数为0就加在总和里,为1就从总和减去,直到遍历完,输出结果ans;

int SumOnlyOne1(std::vector<int>& arr)
{
	int brr[101] = { 0 };
	int ans = 0;
	for (int i = 0; i < arr.size(); ++i)
	{
		if (brr[arr[i]] == 0)
			ans += arr[i];
		else if (brr[arr[i]] == 1)
			ans -= arr[i];
		brr[arr[i]]++;
	}
	return ans;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/847016
推荐阅读
相关标签
  

闽ICP备14008679号