Two Sum II
这道题很基础,一种最标准的O(n)方法就好,即双指针一左一右往中间靠就行,其实这里的思维和二分法是一样的,原因是我们是从最小值和最大值之和开始搜寻的,最小值和最大值之和在整个数组中就是在中间位置,下面是代码
class Solution(object):
def twoSum(self, numbers, target):
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""
end = len(numbers) - 1
start = 0
while start < end:
if numbers[start] + numbers[end] == target:
return [start + 1, end + 1]
elif numbers[start] + numbers[end] < target:
start += 1
else:
end -= 1
return []