LeetCode刷题 | 唯一元素的和

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

思路二:哈希表,一次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;
}

猜你喜欢

转载自blog.csdn.net/Gunanhuai/article/details/115284676