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

解决了所有问题!

相关推荐
NEFU_Jyj11 小时前
牛客周赛R168
算法
特立独行的猫A11 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持11 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang12 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰13 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc13 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
羲云网络17 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
文丑颜不良啊18 小时前
LeetCode2221~2240题目解析
java·leetcode
Navigator_Z18 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode