【发布时间】:2021-02-13 06:54:47
【问题描述】:
我正在尝试获取唯一元素的总和,但是我不满足给定输出的要求。
//Prompted Input: [1,2,3,2]
//Expected output: 4
//Explanation: The unique elements are [1,3]
以下是我的相关代码。我尝试过的一些事情是将 j 设置为 i 用于嵌套循环,但这并没有改变。我采取的下一步是取出第一个 if 条件并让代码在找到唯一数字后进行求和,但输出为 10。如果有人能给我一个方向,我将不胜感激因为我知道我很接近。
int sumOfUnique(vector<int>& nums) {
int sum = 0;
for(int i = 0; i < nums.size(); i++){
for(int j = 0; j < nums.size(); j++){
if(j == i){
sum += nums[i];
}
if(nums[i] == nums[j]){
break;
}
}
}
return sum;
}
【问题讨论】:
-
先尝试对数组进行排序(这样所有多次出现的元素都是连续的),然后循环遍历一次,将不相邻的元素(之前或之后)相加等于自身的元素。权衡是需要存储
nums的副本,这可以通过简单的值传递来实现。 -
这能回答你的问题吗? How to remove all instances of a duplicate from a vector<int>。他们还试图在
std::vector中积累独特的元素。
标签: c++