-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #88 from BrianLusina/feat/two-sum
Algorithms | Arrays - Two sum
- Loading branch information
Showing
4 changed files
with
98 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Two Sum - Input Array Is Sorted | ||
|
||
Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, find two numbers such that | ||
they add up to a specific target number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <= | ||
index1 < index2 <= numbers.length. | ||
|
||
Return the indices of the two numbers, index1 and index2, added by one as an integer array [index1, index2] of length 2. | ||
|
||
The tests are generated such that there is exactly one solution. You may not use the same element twice. | ||
|
||
Your solution must use only constant extra space. | ||
|
||
```text | ||
Example 1: | ||
Input: numbers = [2,7,11,15], target = 9 | ||
Output: [1,2] | ||
Explanation: The sum of 2 and 7 is 9. Therefore, index1 = 1, index2 = 2. We return [1, 2]. | ||
``` | ||
|
||
```text | ||
Example 2: | ||
Input: numbers = [2,3,4], target = 6 | ||
Output: [1,3] | ||
Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, index2 = 3. We return [1, 3]. | ||
``` | ||
|
||
```text | ||
Example 3: | ||
Input: numbers = [-1,0], target = -1 | ||
Output: [1,2] | ||
Explanation: The sum of -1 and 0 is -1. Therefore index1 = 1, index2 = 2. We return [1, 2]. | ||
``` | ||
|
||
## Related Topics | ||
|
||
- Array | ||
- Two Pointers | ||
- Binary Search |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
from typing import List | ||
|
||
|
||
def two_sum(numbers: List[int], target: int) -> List[int]: | ||
m = {} | ||
|
||
for idx, num in enumerate(numbers, start=1): | ||
complement = target - num | ||
|
||
if complement in m: | ||
return [m[complement], idx] | ||
m[num] = idx |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
import unittest | ||
from . import two_sum | ||
|
||
|
||
class TwoSumTestCase(unittest.TestCase): | ||
def test_1(self): | ||
"""numbers = [2,7,11,15], target = 9""" | ||
numbers = [2, 7, 11, 15] | ||
target = 9 | ||
expected = [1, 2] | ||
actual = two_sum(numbers, target) | ||
self.assertEqual(expected, actual) | ||
|
||
def test_2(self): | ||
"""numbers = [2,3,4], target = 6""" | ||
numbers = [2, 3, 4] | ||
target = 6 | ||
expected = [1, 3] | ||
actual = two_sum(numbers, target) | ||
self.assertEqual(expected, actual) | ||
|
||
def test_3(self): | ||
"""numbers = [-1,0], target = -1""" | ||
numbers = [-1, 0] | ||
target = -1 | ||
expected = [1, 2] | ||
actual = two_sum(numbers, target) | ||
self.assertEqual(expected, actual) | ||
|
||
|
||
if __name__ == '__main__': | ||
unittest.main() |