编程语言
首页 > 编程语言> > 两数之和-python解法

两数之和-python解法

作者:互联网

题目描述

给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。
(注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到)
要求:空间复杂度 O(n),时间复杂度 O(nlogn)

错误代码和思路

class Solution:
    def twoSum(self , numbers: List[int], target: int) -> List[int]:
#思路错误因为题目要时间复杂度为O(nlogn),所以不能使用两层for循环
        # write code here
        res=[]
        for i in range(len(numbers)):
            for j in range(i+1,len(numbers)):
                 if numbers[i]+numbers[j]==target:
                    res.append(i+1)
                    res.append(j+1)
                 return res

正确思路和解题

class Solution:
    def twoSum(self , numbers: List[int], target: int) -> List[int]:
 #由于不可以使用for循环,但是第二个数也需要进行记录数组下标值
而且需要经过数值得到下标值,所以可以使用字典来进行保存数组数值和下标。数组数值是key,下标为value       
        # write code here
        hash= {}
        res=[]
        for i in range(len(numbers)):
            temp=target-numbers[i]
            if temp not in hash:
                hash[numbers[i]]=i 
            else:
                res.append(hash[temp]+1)
                res.append(i+1)
                break;
        return res

标签:下标,target,python,res,int,两数,数组,解法,numbers
来源: https://www.cnblogs.com/yzysimpletest/p/16347835.html