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.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
def twoSum(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
k=[]
l=0
for i in nums:
m=target-i
nums.remove(i)
if m in nums:
k.append(l)
k.append(nums.index(m)+l+1)
l+=1
return k
开始用了双层循环,超时。index取得list中某元素的下标。遍历list,每遍历一个就remove一个元素。因为假设的是list中有target的唯一解。结果通过,但是时间不太好,在python里面只击败了28%。。但是胜在思路简洁,通俗易懂。某些人看不懂一定是阅读水平不行。
class Solution:
# @return a tuple, (index1, index2)
def twoSum(self, num, target):
process={}
for index in range(len(num)):
if target-num[index] in process:
return [process[target-num[index]],index]
process[num[index]]=index
这个时间短。将数值记为key value为index 将target-num[index]作为搜索条件