Python实现leetcode 1.两数之和

这篇博客介绍了如何使用Python解决LeetCode中的两数之和问题。首先,作者展示了初始的暴力求解方法,即遍历数组寻找配对,但这种方法效率低下。接着,通过提示,作者提出了改进方案,利用额外的空间如哈希映射加快搜索速度,从而优化了算法的时间复杂度。
摘要由CSDN通过智能技术生成

题目题目要求

传送门:此题链接https://leetcode-cn.com/problems/two-sum/

初解

一拿到就是比较无脑的死算,从前往后先选定一个数字再凑一凑,看看其和是不是所期望的和。
提示1:A really brute force way would be to search for all possible pairs of numbers but that would be too slow. Again, it’s best to try out brute force solutions for just for completeness. It is from these brute force solutions that you can come up with optimizations.

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            for j in range(i+1, len(nums)):
                while nums[i] + nums[j] == target:
                    return ([i,j])

比较无脑的暴力算法,初解的效果很一般,尤其是用时(程序时间复杂度是 O(n^2))。初解效果

更好的解答

根据更多的提示,进一步改善。
提示2:So, if we fix one of the numbers, say x, we have to scan the entire array to find the next number y ,which is value - x ,where value is the input parameter. Can we change our array somehow so that this search becomes faster?
提示3:The second train of thought is, without changing the array, can we use additional space somehow? Like maybe a hash map to speed up the search?

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        keys={}
        for index,num in enumerate(nums):
            if target-num in keys:
                return [index,keys[target-num]]
            keys[num]=index 

效果
传送门:enumerate() 函数介绍链接
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值