-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path167.py
More file actions
26 lines (25 loc) · 972 Bytes
/
167.py
File metadata and controls
26 lines (25 loc) · 972 Bytes
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
class Solution(object):
def twoSum(self, numbers, target):
length = len(numbers)
for i in range(0, length - 1):
diff = target - numbers[i]
#note that it must hold that diff >= numbers[i]
#because otherwise diff would have been found in an earlier iteration
if diff == numbers[i]:
return [i + 1, i + 2]
else: #diff > numbers[i]
left = i + 1
right = length - 1
while left <= right:
middle = (left + right) / 2
if numbers[middle] == diff:
return [i + 1, middle + 1]
elif numbers[middle] < diff:
left = middle + 1
else: #numbers[middle] > diff
right = middle - 1
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""