''' 解题思路: 方法一:双指针法 方法二: 1、两个数下标i,j不能相同,用in操作要去重 2、去掉下标为i的值之后的序列,通过值反查索引j时,要考虑移位因素,如j>=i,是j=j+1 3、要有一个成功标记,success=1,循环结束i,j均有值,但不一定是解 ''' # # @param numbers int整型一维数组 # @param target int整型 # @return int整型一维数组 # class Solution: def twoSum(self , numbers , target ): # write code here n = len(numbers) if n<2: return [] L = sorted(numbers) i = 0 j = n-1 while i<j: if L[i]+L[j]==target: a = numbers.index(L[i]) numbers.pop(a) b = numbers.index(L[j]) if b>=a: b += 1 if a>b: a,b = b,a return a+1,b+1 elif L[i]+L[j]>target: j -= 1 elif L[i]+L[j]<target: i += 1 return [] ''' success = 0 for i in range(len(numbers)-1): tmp = numbers[:i]+numbers[i+1:] if target - numbers[i] in tmp: j = tmp.index(target - numbers[i]) if j>=i: j += 1 success = 1 break if success==1: if i<j: return [i+1,j+1] else: return [j+1,i+1] ''' #Solution().twoSum([3,2,4],6)