两数之和


给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

第一关:

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]


class Solution:

    def twoSum(self, nums, target):

        """

        :type nums: List[int]

        :type target: int

        :rtype: List[int]

        """

        for k,v in enumerate(nums):

            if target - v in nums[k+1:]:

                return [k,nums.index(target - v) ]




第二关:

示例:

[3,3]


class Solution:

    def twoSum(self, nums, target):

        """

        :type nums: List[int]

        :type target: int

        :rtype: List[int]

        """

        for k,v in enumerate(nums):

            if target - v in nums[k+1:]:

                return [k,nums[k+1:].index(target - v) + k + 1]



第三关:

多个组合1440 ms

示例:

nums = [1,2,3,4,5,6,7,8,9]

target = 10


class Solution:

    def twoSum(self, nums, target):

        """

        :type nums: List[int]

        :type target: int

        :rtype: List[int]

        """

        lst = []

        for k,v in enumerate(nums):

            if target - v in nums[k+1:]:

                lst.append([k,nums[k+1:].index(target - v) + k + 1])  

        if len(lst) == 1:

            lst = lst[0]

        return lst



运行最快代码52ms

class Solution:

    def twoSum(self, nums, target):

        dic = {}

        lst = []

        for i in range(len(nums)):

            if target-nums[i] in dic:

                lst.append([dic[target-nums[i]], i])

            dic[nums[i]]=i

        if len(lst) == 1:

            lst = lst[0]

        return lst





上一篇:开放下载!《阿里巴巴 DevOps 实践手册》


下一篇:wGAN如何解决GAN已有问题(附代码实现)