Skip to content

Commit 5f1e194

Browse files
author
Mauricio Klein
committed
Add solution for challenge #22
1 parent 6e66770 commit 5f1e194

File tree

6 files changed

+52
-0
lines changed

6 files changed

+52
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@
2121
- [x] [Challenge 19: First and last indices of an element in a sorted array](challenge-19/)
2222
- [x] [Challenge 20: Reverse a linked list](challenge-20/)
2323
- [x] [Challenge 21: Sorting a list with 3 unique numbers](challenge-21/)
24+
- [x] [Challenge 22: Two-Sum](challenge-22/)

challenge-22/Makefile

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
test:
2+
python test_*.py
3+
4+
.PHONY: test

challenge-22/README.md

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Two-Sum
2+
3+
This problem was asked by Facebook.
4+
5+
## Description
6+
7+
You are given a list of numbers, and a target number k.
8+
9+
Return whether or not there are two numbers in the list that add up to k.
10+
11+
## Example
12+
13+
```
14+
Given [4, 7, 1 , -3, 2] and k = 5, return "true" since 4 + 1 = 5.
15+
```

challenge-22/__init__.py

Whitespace-only changes.

challenge-22/solver.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution():
2+
def two_sum(self, nums, target):
3+
"""
4+
Time complexity: O(n)
5+
Space complexity: O(n) (because of the auxiliar set to store the previous values)
6+
"""
7+
previous_nums = set()
8+
9+
for num in nums:
10+
complement = target - num
11+
12+
if complement in previous_nums:
13+
return True
14+
15+
previous_nums.add(num)
16+
17+
return False

challenge-22/test_solver.py

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import unittest
2+
from solver import Solution
3+
4+
class TestSolver(unittest.TestCase):
5+
def test_solver(self):
6+
self.assertEqual(Solution().two_sum([4,7,1,-3,2], 5), True )
7+
self.assertEqual(Solution().two_sum([4,7,1,-3,2], 10), False)
8+
self.assertEqual(Solution().two_sum([2,2,2,2,2 ], 4), True )
9+
self.assertEqual(Solution().two_sum([2 ], 2), False)
10+
self.assertEqual(Solution().two_sum([2,4,0 ], 4), True )
11+
self.assertEqual(Solution().two_sum([2,4,6,-4 ], 0), True )
12+
self.assertEqual(Solution().two_sum([ ], 0), False)
13+
14+
if __name__ == "__main__":
15+
unittest.main()

0 commit comments

Comments
 (0)