• Leetcode_01【两数之和】


    文章目录:

    •  题目
    • 脚本一及注释
      • 脚本逻辑
    • 脚本二及注释
      • 脚本逻辑  

    题目:

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

    示例:

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

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


    脚本一及步骤注释

    class Solution:                       #定义一个名为Solution的类
        def twoSum(self, nums: List[int], target: int) -> List[int]:      #此处是leetcode给定的输出格式
            zidian = {}                                 #定义一个空字典
            for i,j in enumerate(nums):          #使用枚举的方法enumerate对列表nums的元素进行遍历,i为列表元素的索引号,j为索引号为i对应的列表元素
                k = target - j                #使用和值减去其中一个加数得到另一个加数
                if k in zidian:               #对字典的键进行遍历,查看是否有键的值为k
                    return(i,zidian.get(k))        #如果有键的值为k,则返回遍历列表当前元素的索引号及字典中键为k所对应的值
                zidian[j] = i                 #如果没有在字典中找到键的值为k的情况,则把遍历列表的当前元素的元素值作为键,索引号为值 加入到字典中
    result = Solution()                    #创建一个Solution的类
    print(result.twoSum)                   #调用类中的方法,由于此方法会返回值,所以将值打印出来即可

    【处理逻辑】

    1. 此脚本处理逻辑是生成一个新的数据记录处即字典,用于存储已经遍历的列表元素的索引号及元素值
    2. 由于列表遍历过程中是与字典进行遍历的,所以字典的键值是不会重复的
    3. 通俗来讲就是:一开始桶子是空的,不断拿数据与桶子里的数据进行比对,如果没有找到比对目标的值会放到桶子里,然后进行下一次的比对

    脚本二及步骤注释

    class Solution:                                   #同上
        def twoSum(self, nums: List[int], target: int) -> List[int]:          #同上
            for i in range(0,len(nums)):                #从0到列表元素个数组成的数列进行遍历  
                aa = nums[i]                                       #获取一个列表元素
                bb = target - aa                                   #求和值的另一个数值
                for j in range(i+1,len(nums)):                     #对列表剩余元素进行不重复遍历
                    if bb == nums[j]:                              #如果存在与另一个数值相等的数
                        return(i,j)                                #返回两数的索引号

    脚本逻辑

    1.  此脚本是使用逼近的思想,通俗来讲就是:用第一个数与列表中其余的值进行求和,查看是否与目标值一致
    2. 若一致,则求出两值得索引号即可
    3. 若不一致,丢弃第一个值,使用第二个值与剩余得值进行比较(不包括第一个值),直到遍历所有值或者遇到合适值为止
  • 相关阅读:
    子网掩码
    linux中grep工具
    C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
    c#常用的Datable转换为json,以及json转换为DataTable操作方法
    easyui-从数据库读取创建无极菜单
    wpf 进度条 下拉
    进度条与执行过程
    属性表格 datagridproperty
    Jquery easyui开启行编辑模式增删改操作
    asp.net (jquery easy-ui datagrid)通用Excel文件导出(NPOI)
  • 原文地址:https://www.cnblogs.com/mailong/p/11992842.html
Copyright © 2020-2023  润新知