两数之和-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