赞
踩
题目:
给你一个整数数组 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;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。