Leetcode刷题指南之Python求两数之和【多种思路详解】

CSDN话题挑战赛第1期
活动详情地址https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f
参赛话题:Leetcode刷题指南
话题描述:代码能力是一个程序员的基本能力,而除了做项目之外,大家接触到的最常规的提升代码能力的方法基本就是刷题了,因此,加油刷题,冲刺大厂!
创作模板:Leetcode刷题指南



💎一、Leetcode刷题之两数之和

🏆1.两数之和

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] ==9 ,返回 [0, 1] 。
示例 2:

输入:nums = [3,2,4], target = 6 输出:[1,2] 示例 3:

输入:nums = [3,3], target = 6 输出:[0,1]

提示:

2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109 只会存在一个有效答案 进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?

🏆2.原题链接

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/two-sum

💎二、解题报告

思路1

循环枚举

🏆1.思路分析

🔑思路:
​ 提示:首先想到的是​ 双重循环遍历数组中的每一个数,枚举出两个数可组成的所有组合,判断组合中两个数相加是否等于target,如果等于就输出下标。
例如[0,1,2,3]
0,1
0,2
0,3
1,2
1,3
2,3
所有组合

🏆2.代码详解

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        for i in range(1,len(nums)):
            for n in range(i):
                if nums[n] +nums[i] == target:
                    return [n,i]

不过有些不清晰,简单修饰后

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        l = len(nums)
        for i in range(l):
            for n in range(i+1,l):
                if nums[i] +nums[n] == target:
                    return [n,i]

🏆3.按步骤分析

提示:
l = len(nums)
求出数组长度
for i in range(l):
第一个数从下标为0开始,遍历所有数
for n in range(i+1,l):
第一个数从下标为i+1开始,就是读取下标为i+1后面的数
if nums[i] +nums[n] == target:
判断两个数是否相加为target
return n,i
返回下标

思路2

字典模拟哈希表

🏆1.思路分析

这次我们不找两个数,找一个数,如果第一个数为x,那么y就等于target-x,我们只需找到y是否在列表中,如果在就输出下标。

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        l = len(nums)
        for i in range(l):
            y = target - nums[i]
            for n in range(i+1,l):
                if nums[n] == y:
                    return [n,i]

但是这样还是需要双重循环,没有太大区别!
接下来就用到了字典。
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标.
例如

nums = [10,20,30]
print(enumerate(nums))
结果:
(0 ,10)
(1 ,20)
(2 ,30)

🏆2.代码详解

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        dict = {}
        for v, k in enumerate(nums):
            n = target - k
            if n in dict:
                return [dict[n], v]
            else:
                dict[k] = v

🏆3.按步骤分析

dict = {}
建一个空字典
for v, k in enumerate(nums):
循环遍历,为v和k赋值,v为下标,k为数值
n = target - k
求数n
if n in dict:
return [dict[n], v]
判断数n是否在字典中,如果在就返回下标。
else:
dict[k] = v
这一步是将遍历过的数和其下标,添加到字典里。因为刚开始字典为空,所以会将两个数中的第一个数添加字典中k代表的字典的key,v代表字典的value,当遍历第二个数时,查询第一个数在字典中,返回这两个数的>下标!


CSDN话题挑战赛第1期
活动详情地址
https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: LeetCode 是一个在线编程挑战网站,提供了许多算法数据结构题目供程序员练习和提高。下面是一些关于使用 PythonLeetCode 的提示: 1. 首先,了解题目的要和限制,并确定解题思路。 2. 使用自己熟悉的编程语言(如 Python)进行编码。 3. 在完成编码后,进行单元测试,确保代码的正确性。 4. 提交代码,查看结果。如果错误,请思考错误原因并进行调试。 5. 反复做题,提高自己的算法数据结构能力。 6. 可以参考其他人的题解和代码,可以更好的学习和了解题目的解法。 ### 回答2: LeetCode是一款非常好的刷题平台,它提供了大量的算法题目,帮助程序员们提高编程技能。但是,想要刷好LeetCode需要一些方法和技巧。本篇文章主要介绍LeetCode刷题指南,特别是使用Python语言刷题。 首先,我们需要明确一个问题:刷LeetCode最重要的是什么?我认为是“理解算法”。很多人最开始刷LeetCode时会想直接写代码试试,这是错误的做法。我们首先需要理解题目的意思,思考算法的解题思路,以及算法的时间复杂度和空间复杂度等问题。只有当我们弄懂了算法思路,才能够写出高质量的代码。 其次,我们需要建立良好的代码习惯。Python是一门非常简洁优雅的语言,但是我们需要注意代码的可读性和规范性,这样在后期维护代码时会更加方便。建议使用pycharm等IDE工具,并安装Pylint等插件进行代码检查和优化。 接下来,我们需要准备好一些有效的刷题工具。为了方便,我们可以在本地安装刷题必备工具,例如:leetcode-cli、leetcode vscode插件、leetcode-cn的官方Python SDK等。这些工具可以帮助我们快速地创建、调试和提交题解,并且可以方便地查看题目和测试样例。另外,我们还可以用一些在线的工具,如Jupyter Notebook、Google Colab等来刷题。 最后,我们需要保持耐心和持之以恒的心态。LeetCode刷题不是一蹴而就的事情,需要坚持不懈地努力。每道题都应该认真思考,从简单到复杂、从容易到难以深入理解,跟着题目一步步实现代码解题。通过刷题,我们可以锻炼自己的编程技能、提高算法水平、积累自己的编程经验。 总之,LeetCode是一款非常优秀的算法题目平台,它可以帮助程序员们提高编程水平。使用Python语言刷题,需要我们掌握好编程思路,建立好良好的代码习惯,使用好刷题工具,并坚持不懈地刷题去提升自己的能力。 ### 回答3: 随着人工智能和大数据技术的快速发展,编程成为了一项越来越重要的技能。而刷leetcode算法题是提高编程技能、增加算法思维的有力方式之一。本文主要介绍如何通过Python语言刷leetcode算法题。 一、准备工作 1.安装Python环境 Python是一种优秀的面向对象的解释型计算机程序设计语言,在如今的人工智能和数据科学领域应用广泛。首先需要安装Python环境,推荐安装版本为Python 3.x。 2.注册LeetCode账号 可以通过该网站进行LeetCode算法刷题,而注册账号是必选步骤。 二、解题流程 1.题目分析:初学者可先从LeetCode官方题解中找到简单难度的题目,通过阅读题目,明确题目的意义,梳理解题思路和关键信息。 2.思路整理:理清题目后,可以尝试使用笔和纸来将题目要和信息进行抽象和总结。可以画图或列出清晰的步骤,为编写代码提供思路。 3.编写代码:将思路转化为代码实现。结合算法,通过Python语言的面向对象编程,从而完成代码的编写。 4.测试和优化:在完成编码后,需要对代码进行测试,并对代码进行优化处理。可以通过LeetCode的自动评测系统,检查代码运行是否正确。此步骤也有助于人为地检查代码中的错误,提高代码的效率和质量。 5.总结归纳:在完成一定数量的算法刷题后,可以对做题有所总结和归纳。思考算法题的分类和解题的技巧,这有助于加深理解并提高解题效率。 三、学习资源 1. LeetCode官方网站:www.leetcode.com 2. 《Python Algorithm Interview》 3. 《算法图解》 4. 数字图书馆:https://www.gitbook.com/book/jalan/leetcode-python/details 5. Github仓库:https://github.com/yuzhoujr/leetcode-python 总结一下,刷LeetCode题目是提高自己的算法和编程能力的好方法,Python语言无疑是实现目标的好选择;同时,在刷题过程中,理清题目并充分思考,多测试,总结归纳同样重要。希望以上的介绍有助于您更好地学习和刷题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南蓬幽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值