数组_leetcode167

#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)
原文地址:https://www.cnblogs.com/lux-ace/p/10546872.html