题目描述:
Design and implement a TwoSum class. It should support the following operations: add and find.
add - Add the number to an internal data structure.
find - Find if there exists any pair of numbers which sum is equal to the value.
Example 1:
add(1); add(3); add(5);
find(4) -> true
find(7) -> false
Example 2:
add(3); add(1); add(2);
find(3) -> true
find(6) -> false
含有增加数字的功能,自然是采用哈希表的方法来求two sum比较好。
class TwoSum {
public:
/** Initialize your data structure here. */
TwoSum() {}
/** Add the number to an internal data structure.. */
void add(int number) {
hash[number]++;
}
/** Find if there exists any pair of numbers which sum is equal to the value. */
bool find(int value) {
for(auto x:hash)
{
if(x.first*2==value)
{
if(x.second>=2)
return true;
}
else if(hash.count(value-x.first)>0) return true;
}
return false;
}
private:
unordered_map<int,int> hash;
};