Arrays
Write the function unique_sum(), which takes an array of numbers and returns the sum of only unique (non-repeating) numbers in this array.
int unique_sum(const std::vector<int>& nums) { // CODE }
- #include <iostream>
- #include <vector>
- #include <unordered_map>
- #include <cassert>
- int unique_sum(const std::vector<int>& nums) {
std::unordered_map<int, int> count_map;for (int num : nums) {count_map[num]++;}int sum = 0;for (const auto& pair : count_map) {if (pair.second == 1) {sum += pair.first;}}return sum;- // CODE
- }
Paul Universe2 months ago
The sum of the unique numbers
Arrays
Write the function unique_sum(), which takes an array of numbers and returns the sum of only unique (non-repeating) numbers in this array.
int unique_sum(const std::vector<int>& nums) {
std::unordered_map<int, int> count_map;
for (int num : nums) {
count_map[num]++;
}
int sum = 0;
for (const auto& pair : count_map) {
if (pair.second == 1) {
sum += pair.first;
}
}
return sum;
}
// TODO: Replace examples and use TDD by writing your own tests
Describe(unique_sum_of_numbers)
{
It(should_do_something)
{
Assert::That(unique_sum({1,2,3,2}), Equals(4));
Assert::That(unique_sum({1,1,2,3}), Equals(5));
Assert::That(unique_sum({-1,-1,0,1}), Equals(1));
};
It(should_do_something_other)
{
Assert::That(unique_sum({}), Equals(0));
Assert::That(unique_sum({5, 5, 5, 5}), Equals(0));
Assert::That(unique_sum({10, 20, 30, 20, 10}), Equals(30));
Assert::That(unique_sum({1, 2, 3, 4, 5}), Equals(15));
Assert::That(unique_sum({-5, -5, 0, 5, 5}), Equals(0));
Assert::That(unique_sum({-1, 2, -1, 3, 4, 2}), Equals(7));
Assert::That(unique_sum({1, 2, 3, 4, 5, 1, 2, 3}), Equals(9));
Assert::That(unique_sum({100, 200, 300, 300, 200, 100}), Equals(0));
}
};