Loading Now

[STLC++Map] sumOfCommon

STL C++ Map

Bài tập.

Cho hãy dãy số nguyên arr1arr2, 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

Contact