給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。
你可以假設(shè)每個(gè)輸入只對(duì)應(yīng)一種答案涤久,且同樣的元素不能被重復(fù)利用迅矛。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因?yàn)?nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解答:
這道題使用字典解決,在面試中曾經(jīng)考過集漾。如果sum-current value不在字典里闪幽,則保存該值作為key击敌,index是current value的index费封。如果存在當(dāng)前字典中焕妙,則返回value和當(dāng)前的index。
class Solution:
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
def twoSum(self, nums, target):
dic={}
for i in range(len(nums)):
if nums[i] in dic and i!=dic[nums[i]]:
return i,dic[nums[i]]
dic[target-nums[i]]=i