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_mapnum = 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里面

解决了所有问题!

相关推荐
进击的明明12 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
全栈弄潮儿13 小时前
Python实战第8期:函数
后端·python·编程语言
zyl76515 小时前
FlashAttention 详解:从 GPU 硬件、普通 Attention 到分块计算与 Online Softmax
算法
卷无止境15 小时前
暗流与破局:AI时代的代码安全审查工具全景指南
后端·python
卷无止境18 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python
爱读书的小胖19 小时前
LeetCode 122:买卖股票的最佳时机 II(C)解题分析
算法
结局无敌19 小时前
React Native for OpenHarmony 实战:三方库 react-native-modal-dialog 的鸿蒙化适配指南
深度学习·算法·react native·react.js·harmonyos
滴啦嘟啦哒19 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
OPEN-F19 小时前
ROS2系列教程:上位机建图与导航(原理综合)
算法·机器人
weixin_3077791319 小时前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab