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.
For example,
add(1); add(3); add(5);
find(4) -> true
find(7) -> false
//method 1: class TwoSum{ public: void add(int number){ ++m[number]; } bool find(int value){ for(auto a : m){ int t = value - a.first; if((t != a.first && m.count(t)) || (t == a.first && a.second > 1)){ return true; } } return false; } private: unordered_map<int,int> m; }; //method 2: class TwoSum{ public: void add(int number){ s.insert(number); } bool find(int value){ for(auto a : s){ int cnt = a == value - a ? 1 : 0; if(s.count(value - a) > cnt){ return true; } } return false; } };
怕什么真理无穷,进一寸有一寸的欢喜。---胡适