两数之和

简介: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 第一关: 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 .


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

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

第一关:

示例:

给定 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





目录
相关文章
|
7月前
|
存储 C++
两数相加(C++)
两数相加(C++)
49 0
|
22天前
两数之和
给定整数数组 `nums` 和目标值 `target`,任务是在数组中找到和为 `target` 的两个整数并返回它们的下标。每个输入保证有唯一解,且不能重复使用同一元素。示例展示了不同情况下的输入与输出,暴力破解法通过两层循环遍历所有可能的组合来寻找解。
|
2月前
|
Python
01、两数之和——2021-04-12
01、两数之和——2021-04-12
13 0
|
2月前
|
Go Python
01.两数之和
01.两数之和
16 0
|
2月前
|
存储
Leetcode第29题(两数相除)
LeetCode第29题要求使用不包含乘法、除法和mod运算符的方法计算两个整数的商,通过记录结果的正负,将问题转化为负数处理,并利用二进制幂次方的累加来逼近除数,最后根据结果的正负返回相应的商。
19 0
|
6月前
1.两数之和
1.两数之和
|
6月前
2.两数相加
2.两数相加