-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path1865.cpp
More file actions
39 lines (35 loc) · 1.01 KB
/
1865.cpp
File metadata and controls
39 lines (35 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class FindSumPairs {
public:
unordered_map<int, int> counts;
vector<int> nums;
vector<int> nnums;
FindSumPairs(vector<int>& nums1, vector<int>& nums2) {
nums.resize(nums1.size(), 0);
nnums.resize(nums2.size(), 0);
int n = nums1.size();
int m = nums2.size();
for (int i = 0; i < n; ++i) nums[i] = nums1[i];
for (int i = 0; i < m; ++i) nnums[i] = nums2[i];
for (auto& num : nums2) counts[num]++;
}
void add(int index, int val) {
int original = nnums[index];
counts[original]--;
counts[original + val]++;
nnums[index] = original + val;
}
int count(int tot) {
int res = 0;
for (auto& num : nums) {
int lack = tot - num;
res += counts[lack];
}
return res;
}
};
/**
* Your FindSumPairs object will be instantiated and called as such:
* FindSumPairs* obj = new FindSumPairs(nums1, nums2);
* obj->add(index,val);
* int param_2 = obj->count(tot);
*/