【力扣100】1.两数之和__231206

两数之和

第一次题解:

python 复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        #思路是for循环第一个数然后在数组中找差值
        for i in range(0,len(nums)-1):
            second_value=target-nums[i]
            for j in range(i+1,len(nums)):
                if nums[j]==second_value:
                    return [i,j]

思路:两个for循环,找元素

还有一种方法:

python 复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        for i in range(0,n):
            for j in range(i+1,n):
                if nums[i] + nums[j] == target:
                    return [i, j]

也是两层for循环


使用哈希表解法:

python 复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashtable={}
        for index,value in enumerate(nums):
            # in hashtable 判断的是键集合
            if target-value not in hashtable:
                # 因为本题返回下标,所以键放数值,值放下标
                hashtable[value]=index
            else:
                return [hashtable[target-value],index]

时间复杂度:n

这里有两个要注意的点:

1.enumerate():

返回可迭代的index和values

可以使用enumerate的是:列表,元组和字符串

2. x in hashtable:

这里比较的是x是不是在hashtable的键集合

相关推荐
风影小子7 分钟前
注册登录学生管理系统小项目
算法
黑龙江亿林等保9 分钟前
深入探索哈尔滨二级等保下的负载均衡SLB及其核心算法
运维·算法·负载均衡
起名字真南11 分钟前
【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案
开发语言·c++·leetcode
lucy1530275107912 分钟前
【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者
人工智能·科技·单片机·嵌入式硬件·算法·机器学习
杜杜的man28 分钟前
【go从零单排】迭代器(Iterators)
开发语言·算法·golang
小沈熬夜秃头中୧⍤⃝44 分钟前
【贪心算法】No.1---贪心算法(1)
算法·贪心算法
木向1 小时前
leetcode92:反转链表||
数据结构·c++·算法·leetcode·链表
阿阿越1 小时前
算法每日练 -- 双指针篇(持续更新中)
数据结构·c++·算法
skaiuijing2 小时前
Sparrow系列拓展篇:对调度层进行抽象并引入IPC机制信号量
c语言·算法·操作系统·调度算法·操作系统内核
Star Patrick2 小时前
算法训练(leetcode)二刷第十九天 | *39. 组合总和、*40. 组合总和 II、*131. 分割回文串
python·算法·leetcode