解法1:
def twoSum(nums, target): #时间复杂度为n*log(n)
T=[i for i in range(len(nums))]
s_id = sorted(T,key=lambda k: nums[k])
head = 0
tail = len(nums) - 1
sum_two= nums[s_id[head]] + nums[s_id[tail]]
while sum_two != target:
if sum_two > target:
tail -= 1
elif sum_two < target:
head += 1
sum_two = nums[s_id[head]] + nums[s_id[tail]]
return [s_id[head], s_id[tail]]
解法2:哈希求解(时间复杂度最小)
def twoSum(nums,target):
hash={}
for k,v in enumerate(nums):
if target-v in hash:
return [hash[target-v],k]
else:
hash[v]=k
return []
解法3:暴力求解
def twoSum(N,k):
for i in range(len(N)):
l=k-N[i]
if l in N:
t=N.index(l)
if i == t:
continue
else:
return [i,t]
break
else:
continue