这个数据结构主要是把数据存储到unordered_multiset里,multiset类似set,但是它允许重复元素的存在。
这是cplusplus.com里关于unordered_multiset的指引
unordered_multiset reference
实现find函数我原本的思路是用set.find(n - value), 但是发现这个方法不能解决例如 set: {0}, find(0) 这样的情况,所以我选择了是用multiset的count函数,如果value == value - n, 那在multisite中至少要这个value出现两次才能满足 n + (value - n) == value 此处n 与 value - n 是值相同的不同元素
class TwoSum {
public:
// Add the number to an internal data structure.
void add(int number) {
nums.insert(number);
}
// Find if there exists any pair of numbers which sum is equal to the value.
bool find(int value) {
for (auto n: nums) {
int count = value - n == n ? 2 : 1;
if (nums.count(value - n) >= count) return true;
}
return false;
}
private:
unordered_multisetnums;
};