1. 雙指針:
class Solution:
"""
@param nums: an array of Integer
@param target: target = nums[index1] + nums[index2]
@return: [index1 + 1, index2 + 1] (index1 < index2)
"""
def twoSum(self, nums, target):
# write your code here
start = 0
end = len(nums)-1
while start<end:
if nums[start]+nums[end]==target:
return start+1,end+1
if nums[start]+nums[end]>target:
end -= 1
if nums[start]+nums[end]<target:
start += 1
return None
2. dictionary
class Solution(object):
def twoSum(self, numbers, target):
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""
d={}
for i in range(len(numbers)):
if numbers[i] in d:
return d[numbers[i]]+1,i+1
else:
d[target-numbers[i]]=i
最喜歡雙指針這種直觀的算法了。