[STLC++Map] sumOfCommon
Bài tập.
Cho hãy dãy số nguyên arr1
và arr2
, hãy tính tổng những số xuất hiện trong cả hai dãy, lưu ý là mỗi số chỉ được tính một lần.
Ví dụ:
- Với
arr1 = [6, 7, 5, 4, 6, 8]
,arr2 = [2, 5, 7, 5, 3]
thìsumOfCommon(arr1, arr2) = 12.
- Với
arr1 = [5,6,7]
,arr2 = [2,3,4]
thìsumOfCommon(arr1, arr2) = 0
.
Hướng dẫn.
Tạo một map với các khóa là các số trong arr1
, sau đó bạn có thể dùng hàm find() để kiểm tra xem các phần tử trong arr2
có xuất hiện trong arr1
không.
Code mẫu:
int sumOfCommon(std::vector<int> arr1, std::vector<int> arr2)
{
map <int, int> cnt;
int ans = 0;
for (auto x : arr1)
cnt[x] = x;
for (auto x : arr2)
{
if (cnt.find(x) != cnt.end())
{
ans += cnt.find(x)->second;
cnt[x] = 0;
}
}
return ans;
}
Post Comment