【LeetCode|Hot100】No:1两数之和

注:

本系列文章仅是作者自己学习过程中记录的笔记,是初学python用于算法求解的过程,会含有很多对于python的个人注解,用于学习。求职中解算法,我打算使用Python来进行解答,不知是否可不可以,希望能得到大佬的建议,轻喷。

目录

注:

题目:

暴力解法:

哈希表法:

题目:

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

暴力解法:

直接双重循环穷举数组来计算出target,记录出正确下标进行输出。 
时间复杂度:O(N^2)

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        result =[]
        for i in range(0,len(nums)):
            for j in range(i+1,len(nums)):
                sum=nums[i]+nums[j]
                if sum==target:
                    result.append(i)
                    result.append(j)
                    return result
        return result

#class关键字定义了一个名叫solution的类

#def用来定义函数或类中的方法

#参数self:代表类的实例对象,这样写可以在外部直接调用xxx.twoSum

#nums:List[int],-----nums是参数名,List[int]是类型注解:表示是一个整形的列表

#->List[int]指的是整个函数的返回类型是一个整形列表,是一种类型注解

#range()左闭右开

#result=[]表示新建一个空列表

#列表名.append(i):指的是在列表的末尾上新加上元素i

#注意缩进:类,方法,循环,If

#冒号:表示开启一段代码块(类/函数,方法/循环/IF)

哈希表法:

用target来减去列表元素i,寻找是否有(9-i)【diff】存在。

时间复杂度:O(N)

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:   
        result=[]
        mapping={}
        for i in range(0,len(nums)):
            mapping[nums[i]]=i
        for j in range(0,len(nums)):
            diff=target-nums[j]
            if(diff in mapping and mapping [diff]!=j):
                result.append(j)
                result.append(mapping[diff])
                return result

  #class关键字定义了一个名叫solution的类
  #Q:为什么使用哈希表呢?
  #A:使用哈希表(字典)(键值对)的方式,去寻找key和value的时间是O(1)而不是O(N)
  #此题由题意可知:将列表元素值作为key,列表索引充当value----mapping[nums[i]]=i
  #mapping={}:创建空字典
  #diff in mapping and mapping [diff]!=j:判断diff是否在字典中,同时避免在字典中找成同一元素了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值