Given an array of integers, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution.
Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
思路:
将原有数组排序储存在新的数组temp中。
设置两个标识左标识i和右标识j
如果 temp[i]+temp[j]<target
则 i++
如果 temp[i]+temp[j]>target
则 j−−
原本用了 nums.index(temp[i]+1) 来找下标,但是这样忽略了两个 value 相同时候 index() 会定位在第一个value的位置上导致报错~
最后用一个遍历来定位
python代码如下:
class Solution(object):
def twoSum(self, nums, target):
temp=sorted(nums)
i=0
j=len(temp)-1
while((temp[i]+temp[j])!=target) & i<j:
if temp[i]+temp[j]<target:
i=i+1
elif temp[i]+temp[j]>target:
j=j-1
else:
break
result=[]
for k in range(len(nums)):
if nums[k]==temp[i]:
result.append(k+1)
elif nums[k]==temp[j]:
result.append(k+1)
return result