题目
思路
双指针。
代码
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
numbers = []
for i, v in enumerate(nums):
numbers.append([v, i])
numbers.sort(key = lambda x : x[0])
i = 0; j = len(numbers) - 1
while i < j:
if numbers[i][0] + numbers[j][0] > target:
j -= 1
elif numbers[i][0] + numbers[j][0] < target:
i += 1
else: return [min(numbers[i][1], numbers[j][1]) + 1, max(numbers[i][1], numbers[j][1]) + 1]