LeetCode 热题 100第一题:两数之和python版本

第一部分:题目描述

给定一个整数数组 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
  • 只会存在一个有效答案

第二部分:代码实现

复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        num_map={}#存储数字和索引(那些没用的)

        for i,num in enumerate(nums):
            shengyu=target-num
            if shengyu in num_map:
                return [i,num_map[shengyu]]
            else:
                num_map[num] = i#说明这个值不满足题目要求,放到num_maps里面

第三部分:代码解析

(1)基本知识点

python中的数组使用list列表[]来实现,代表输入的一串数字;

字典是{},可以用这个带存储列表中"索引index"和"值value"的对应关系;

enumerate() 函数的作用: 同时列出数据数据对应的下标(索引)

num_map[num] = i的作用:字典[键] = 值,将数字和对应索引存入num_map

复制代码
nums = [2, 7, 11, 15]
num_map = {}  # 存储数字和索引
for i, num in enumerate(nums):
    num_map[num] = i
print(num_map)

(2)坑1

复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        num_map={}#存储数字和索引
        for i,num in enumerate(nums):
            num_map[num] = i#字典[键] = 值,将数字和对应索引存入num_map
        for i,num in enumerate(nums):
            first_number=num
            second_number=target-first_number
            if second_number in num_map:
                return num_map[first_number],num_map[second_number]

(3)坑2

复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        num_map={}#存储数字和索引
        for i,num in enumerate(nums):
            num_map[num] = i#字典[键] = 值,将数字和对应索引存入num_map
        for i,num in enumerate(nums):
            first_number=num
            second_number=target-first_number
            if second_number in num_map and second_number !=first_number:
                return num_map[first_number],num_map[second_number]

if语句变成了:if second_number in num_map and second_number !=first_number:来解决坑1:

(4)最终解决方法

复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        num_map={}#存储数字和索引(那些没用的)

        for i,num in enumerate(nums):
            shengyu=target-num
            if shengyu in num_map:
                return [i,num_map[shengyu]]
            else:
                num_map[num] = i#说明这个值不满足题目要求,放到num_maps里面

解决了所有问题!

相关推荐
m0_613856291 小时前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
昵称小白2 小时前
复杂度分析方法
算法
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
科研前沿2 小时前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算
ID_180079054732 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
时空系2 小时前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
CHANG_THE_WORLD4 小时前
python 批量终止进程exe
开发语言·python
liann1194 小时前
3.2_红队攻击框架--MITRE ATT&CK‌
python·网络协议·安全·网络安全·系统安全·信息与通信
云天AI实战派4 小时前
AI 智能体问题排查指南:ChatGPT、API 调用到 Agent 上线失灵的全流程修复手册
大数据·人工智能·python·chatgpt·aigc
学涯乐码堂主4 小时前
有趣的“打擂台算法”
c++·算法·青少年编程·gesp