1. 程式人生 > >Two Sum(python)

Two Sum(python)

題目:Two Sum

    Given nums = [2, 7, 11, 15], target = 9,
    Because nums[0] + nums[1] = 2 + 7 = 9,
    return [0, 1].

第一步:用 zip 函式做一個字典,將nums中數字與index聯絡起來:

In [33]: dictionary = dict(zip(nums, list(range(0, len(nums)))))
In [34]: dictionary
Out[34]: {2: 0, 7: 1, 11: 2, 15: 3}

第二步:迴圈將 target 減去 nums 中的 value, 得到一個subvalue, 如果這個subvalue在字典裡面, 就返回 value和subvalue的 index 

完整程式如下:

calss Solution():
    def twosum(nums, target):
        dictionary = dict(zip(nums, list(range(0, len(nums)))))
        for index, value in enumerate(num):
            subvalue = target - value
            if sub in dic:
                return [index, dictionary[subvalue]]
            else:
                continue

也可迴圈生成字典,此種解法如下:

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        dic = dict()
        for index,value in enumerate(nums):
            sub = target - value
            if sub in dic:
                return [dic[sub],index]
            else:
                dic[value] = index #此處迴圈生成字典,效果和我上面程式的dictionary一樣

作者:石曉文的學習日記
連結:https://www.jianshu.com/p/b71fc7307e42
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。