#coding=utf-8
# 解题思路: 关键点:二分查找 20190302 找工作期间
class Solution(object):
def twoSum(self, numbers, target):
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""
if not numbers:
return
start = 0
end = len(numbers)-1
for i in range(len(numbers)):
j = self.binarySearch(numbers,start,end ,target-numbers[i])
if i != j and j != -1:
if i < j:
return [i+1,j+1]
else:
return []
pass
def binarySearch(self,alist,start,end,target ):
if start > end :
return -1
while(start <= end):
mid = start + (end-start)/2
if alist[mid] == target:
return mid
elif target > alist[mid]:
start = mid + 1
else:
end = mid -1
return -1
class Solution2(object):
def twoSum(self, numbers, target):
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""
if not numbers:
return
start = 0
end = len(numbers)-1
while start < end :
if numbers[start] + numbers[end] == target:
return [start+1,end+1]
elif numbers[start] + numbers[end] > target:
end -= 1
else:
start += 1
numbers = [2, 7, 11, 15]
target = 9
s = Solution2()
print s.twoSum(numbers,9)