Finding Pairs With a Certain Sum LeetCode solution in C++

1
class FindSumPairs {
2
public:
3
unordered_map<int, int> mp2;
4

5
unordered_map<int, int> mp1;
6

7
vector<int> arr;
8

9
FindSumPairs(vector<int> &nums1, vector<int> &nums2) {
10
for (auto x : nums1) {
11
mp1[x]++;
12
}
13

14
arr = nums2;
15

16
for (auto x : nums2) {
17
mp2[x]++;
18
}
19
}
20

21
void add(int index, int val) {
22
mp2[arr[index]]--;
23

24
if (mp2[arr[index]] == 0) {
25
mp2.erase(arr[index]);
26
}
27

28
arr[index] += val;
29

30
mp2[arr[index]]++;
31
}
32

33
int count(int tot) {
34
int count = 0;
35

36
for (auto x : mp1) {
37
int val = x.first;
38

39
int freq = x.second;
40

41
int need = tot - val;
42

43
if (mp2.count(need)) {
44
count += mp2[need] * freq;
45
}
46
}
47

48
return count;
49
}
50
};
51

52
/**
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
*/

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0