Finding Pairs With a Certain Sum LeetCode solution in C++
1class FindSumPairs {2public:3unordered_map<int, int> mp2;45unordered_map<int, int> mp1;67vector<int> arr;89FindSumPairs(vector<int> &nums1, vector<int> &nums2) {10for (auto x : nums1) {11mp1[x]++;12}1314arr = nums2;1516for (auto x : nums2) {17mp2[x]++;18}19}2021void add(int index, int val) {22mp2[arr[index]]--;2324if (mp2[arr[index]] == 0) {25mp2.erase(arr[index]);26}2728arr[index] += val;2930mp2[arr[index]]++;31}3233int count(int tot) {34int count = 0;3536for (auto x : mp1) {37int val = x.first;3839int freq = x.second;4041int need = tot - val;4243if (mp2.count(need)) {44count += mp2[need] * freq;45}46}4748return count;49}50};5152/**53* Your FindSumPairs object will be instantiated and called as such:54* FindSumPairs* obj = new FindSumPairs(nums1, nums2);55* obj->add(index,val);56* int param_2 = obj->count(tot);57*/