-
Notifications
You must be signed in to change notification settings - Fork 6
/
170-two-sum-iii.js
57 lines (52 loc) · 1.12 KB
/
170-two-sum-iii.js
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
*
* Ashish Patel
* e: ashishsushilPatel@gmail.com
* w: https://ashish.me
*
*/
/*
* 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
*/
const TwoSum = function() {
this.map = {}
}
TwoSum.prototype.add = function(number) {
if(this.map[number]){
this.map[number] += 1
} else {
this.map[number] = 1
}
}
TwoSum.prototype.find = function(value){
for (const key in this.map) {
const currentNumber = key - 0
const complement = value - currentNumber
if (this.map[complement] && (currentNumber !== complement || this.map[complement] > 1)) {
return true
}
}
return false
}
test('two Sum III', () => {
const twoSum = new TwoSum()
twoSum.add(3)
twoSum.add(1)
twoSum.add(2)
expect(twoSum.find(6)).toEqual(false)
});