ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

两数之和-python解法

2022-06-06 13:00:37  阅读:141  来源: 互联网

标签:下标 target python res int 两数 数组 解法 numbers


题目描述

给出一个整型数组 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有