1.两数之和-Python-LeetCode

1.两数之和-Python-LeetCode刚开始接触算法方面,好多都不懂,打算每刷一题就整理一下题目:给定一个整数数列,找出其中和为特定值的那两个数。你可以假设每个输入都只会有一种答案,同样的元素不能被重用。示例:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9所以返回[0,1]解法一:.刚开始看到的的时候,第一个想到的就是用一个嵌套循环把n…

大家好,又见面了,我是你们的朋友全栈君。

刚开始接触算法方面,好多都不懂,打算每刷一题就整理一下

题目:

给定一个整数数列,找出其中和为特定值的那两个数。

你可以假设每个输入都只会有一种答案,同样的元素不能被重用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解法一:.刚开始看到的的时候,第一个想到的就是用一个嵌套循环把nums列表遍历两次,虽然测试通过了但是耗时实在太长了,然后就考虑了其他时间复杂度低的方法

代码如下:

class Solution:
    def twoSum(self,nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        #用len()方法取得nums列表的长度
        n = len(nums)
        #x取值从0一直到n(不包括n)
        for x in range(n):
            #y取值从x+1一直到n(不包括n)
            #用x+1是减少不必要的循环,y的取值肯定是比x大
            for y in range(x+1,n):
                #假如 target-nums[x]的某个值存在于nums中
                if nums[y] == target - nums[x]:
                    #返回x和y
                    return x,y
                    break
                else:
                    continue

1.两数之和-Python-LeetCode

解法二:用一个for循环,直接在里面查询target-nums[x]是否存在于nums列表中,速度比解法一快了许多,但还是不够

代码如下:

class Solution:
    def twoSum(self,nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        #用len()方法取得nums列表长度
        n = len(nums)
        #x从0到n取值(不包括n)
        for x in range(n):
            a = target - nums[x]
            #用in关键字查询nums列表中是否有a
            if a in nums:
                #用index函数取得a的值在nums列表中的索引
                y = nums.index(a)
                #假如x=y,那么就跳过,否则返回x,y
                if x == y:
                    continue
                else:
                    return x,y
                    break
            else :
                continue

1.两数之和-Python-LeetCode

解法三:这个解法是我看了排名前几个的答案后才知道的, 先创建一个空字典,然后依次把target-nums[x]的值存入字典,存入一个就跟nums[x+1]去比较, 字典中的key为target-nums[x],value为x,也就是nums[x]在nums列表中的索引位置。当字典d中有nums[x+1]时,也就是target – nums[y] = nums[x+1] , y肯定是小于x+1的(因为y是x+1之前循环过的数字)

所以是 return y,x+1

class Solution:
    def twoSum(self,nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        #用len()方法取得nums列表长度
        n = len(nums)
        #创建一个空字典
        d = {}
        for x in range(n):
            a = target - nums[x]
            #字典d中存在nums[x]时
            if nums[x] in d:
                return d[nums[x]],x
            #否则往字典增加键/值对
            else:
                d[a] = x
        #边往字典增加键/值对,边与nums[x]进行对比

        
                    
                    

1.两数之和-Python-LeetCode

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133633.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java线程同步:synchronized锁住的是代码还是对象

    Java线程同步:synchronized锁住的是代码还是对象在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。Synchronized既可以对代码块使用,也可以加在整个方法上。 关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码:classSync{ publicsynchronizedvoidtest

    2022年7月15日
    17
  • 精选国外免费PHP空间推荐「建议收藏」

    精选国外免费PHP空间推荐「建议收藏」精选国外免费PHP空间推荐方法/步骤000webhost–1500M支持PHP可绑米免费虚拟主机免费提供1500M空间,100G流量,FTP、Web方式上传管理文件,支持PHP5,提供2个M

    2022年7月1日
    52
  • jpeg图像压缩算法流程详解_图像压缩最快算法

    jpeg图像压缩算法流程详解_图像压缩最快算法JPEG是Joint Photographic Exports Group的英文缩写,中文称之为联合图像专家小组。该小组隶属于ISO国际标准化组织,主要负责定制静态数字图像的编码方法,即所谓的JPEG算法。JPEG专家组开发了两种基本的压缩算法、两种熵编码方法、四种编码模式。如下所示:压缩算法:(1)有损的离散余弦变换DCT(Discrete Cosine Transform)(2)无

    2022年10月28日
    0
  • win10 卸载cuda10.1

    win10 卸载cuda10.1创建于:@2020.04.19修改于:@2020.04.19文章目录1.背景2.cuda卸载1.背景在尝试安装tensorflow-gpu时,cuda安装版本错误。需要卸载。2.cuda卸载(1)在控制面板中打开【程序】–>【程序和功能】(2)确定要卸载的内容,图中红框内的内容(3)删除C盘里面C:\ProgramFiles\NVIDIAGPUComputi…

    2022年6月16日
    30
  • 职称计算机ppt2003窍门,ppt2003模块职称计算机考试

    职称计算机ppt2003窍门,ppt2003模块职称计算机考试职称计算机考试模块Powerpoint2003基础1、要求:利用“开始”菜单启动PowerPoint2003[略]2、要求:利用桌面快捷方式启动PowerPoint2003,再退出PowerPoint2003[略]3、要求:用开始菜单打开最近使用过的“雷雨课件”文件:点击“开始”→“我最近的文档”→“|雷雨课件”。4、要求:从最近打开过的演示文稿“学习指南”启动PowerPoint2003,然后…

    2022年5月30日
    33
  • .pfx 证书和 .cer 证书

    .pfx 证书和 .cer 证书证书系列:1:.pfx证书和.cer证书2:导入pfx证书通常情况下,作为文件形式存在的证书一般有三种格式:第一种:带有私钥的证书,由PublicKeyCryptographyStandards#12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以.pfx作为证书文件后缀名。 第二种:DEREncodedBinary(.cer)二进制编码的证书,证书中没有私钥,DER编码二进制格式的证书文件,以.cer作为证书文件后缀名。 第三种:Bas.

    2022年6月3日
    92

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号