Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
给定一个整数数组,返回两个数字的索引,使它们加起来等于一个特定的目标。
你可以假设每个输入都只有一个解决方案,并且不能两次使用相同的元素。
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
Python3
class Solution:
def twoSum(self, nums, target):
L=len(nums)
for i in range(L):
for j in range(i+1,L):
if nums[i]+nums[j]==target:
return[i,j]
if __name__=='__main__':
s=Solution()
print(s.twoSum([2,7,11,15],9))
Finished
Runtime: 52 ms
Your input [2,7,11,15] 9
stdout [0, 1]
Output [0,1] Diff
Expected [0,1]
167. Two Sum II - Input array is sorted
Given an array of integers that is already sorted in ascending order, 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.
Note:
- Your returned answers (both index1 and index2) are not zero-based.
- You may assume that each input would have exactly one solution and you may not use the same element twice.
Example:
Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
给定一个已经按升序排序的整数数组,在其中找到两个数,使他们加起来为目标数值,最后返回这两个数的索引。返回的第一个索引需要小于第二个索引,并且索引是从1开始计算的。注意每个情况只有一组解,并且不能使用相同的元素两次。
可以使用收尾两个指针进步遍历,因为已经排好序了,则前后两值相加,与目标值比大小,进行相应的调整。
class Solution:
def twoSum(self, numbers, target):
i=0
j=len(numbers)-1
while i<j:
if numbers[i]+numbers[j]<target:
i+=1
elif numbers[i]+numbers[j]>target:
j-=1
else:
return [i+1,j+1]