两数之和

简介: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 第一关: 示例: 给定 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





目录
相关文章
|
1月前
|
Python
01、两数之和——2021-04-12
01、两数之和——2021-04-12
10 0
|
1月前
|
存储
Leetcode第29题(两数相除)
LeetCode第29题要求使用不包含乘法、除法和mod运算符的方法计算两个整数的商,通过记录结果的正负,将问题转化为负数处理,并利用二进制幂次方的累加来逼近除数,最后根据结果的正负返回相应的商。
16 0
|
1月前
|
Go Python
01.两数之和
01.两数之和
15 0
|
3月前
|
算法
LeetCode第29题两数相除
这篇文章介绍了LeetCode第29题"两数相除"的解题方法,通过使用加法、减法和二进制位移法代替常规的乘除操作,并考虑了整数溢出问题,提供了一种高效的算法解决方案。
LeetCode第29题两数相除
|
3月前
|
算法
LeetCode第2题两数相加
该文章介绍了 LeetCode 第 2 题两数相加的解法,通过同时遍历两个链表的头节点,创建新链表接收计算结果,时间复杂度为 O(n)。
LeetCode第2题两数相加
|
5月前
1.两数之和
1.两数之和
|
6月前
|
存储 算法 Go
LeetCode第二题: 两数相加
 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
LeetCode第二题: 两数相加
|
6月前
leetcode-29:两数相除
leetcode-29:两数相除
39 0