File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ // Source : https://oj.leetcode.com/problems/two-sum-iii-data-structure-design/
2+ // Author : Hao Chen
3+ // Date : 2014-12-29
4+
5+ /* *********************************************************************************
6+ *
7+ * Design and implement a TwoSum class. It should support the following operations: add and find.
8+ *
9+ * add - Add the number to an internal data structure.
10+ * find - Find if there exists any pair of numbers which sum is equal to the value.
11+ *
12+ * For example,
13+ *
14+ * add(1); add(3); add(5);
15+ * find(4) -> true
16+ * find(7) -> false
17+ *
18+ **********************************************************************************/
19+
20+ class TwoSum {
21+ private:
22+ unordered_map<int , int > nums;
23+ public:
24+
25+ // O(1) add
26+ void add (int number) {
27+ nums[number]++;
28+ }
29+
30+ // O(n) find
31+ bool find (int value) {
32+ int one, two;
33+ for (auto it = nums.begin (); it != nums.end (); it++){
34+ one = it->first ;
35+ two = value - one;
36+ if ( (one == two && it->second > 1 ) ||
37+ (one != two && nums.find (two) != nums.end () ) ){
38+ return true ;
39+ }
40+ }
41+ return false ;
42+ }
43+ };
You can’t perform that action at this time.
0 commit comments