leetcode 1の2つの数の和(python 3実装)


2つの数の和:タイトル:整数配列numsとターゲット値targetを指定します.この配列でターゲット値とターゲット値の2つの整数を見つけて、彼らの配列の下に返してください.
入力ごとに1つの答えしか対応しないと仮定できます.しかし、この配列の同じ要素を繰り返し利用することはできません.
例えばnums=[2,7,11,15],target=9が与えられる
nums[0]+nums[1]=2+7=9なので[0,1]を返します
pythonコード実装:
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        lookup = {}
        for i, num in enumerate(nums):
            if target - num in lookup:
                return [lookup[target-num], i]
            else: #         num  index map 
                lookup[num] = i

ポイントは、このような問題の考え方を覚えておくことです.
非辞書法実装
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        dic = {}
        for i in range(len(nums)):
            if target - nums[i] in dic:
                return [i,dic[target-nums[i]]]
            else:
                dic[nums[i]] = i