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

解决了所有问题!

相关推荐
普通网友44 分钟前
共识算法实现:从工作量证明到权益证明的演进
算法·区块链·共识算法
zhiSiBuYu05171 小时前
Python3 模块开发与应用实战指南
python
ldmd2842 小时前
地图生成算法(噪声篇-Perlin,Simplex,Value noise)
算法·go·地图生成
databook2 小时前
用方差阈值过滤掉“惰性特征”
python·机器学习·scikit-learn
Freak嵌入式2 小时前
MCU 低功耗模式解析:时钟门控、电源门控、深度休眠
人工智能·python·单片机·嵌入式硬件·开源·依赖倒置原则·micropython
国科安芯2 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v
小陈phd2 小时前
集成检索介绍
算法
小poop3 小时前
轮转数组:从暴力到最优,一题掌握算法复杂度分析
数据结构·算法·leetcode
樱桃读报僵尸3 小时前
说说 LLMRouter,Agent 执行过程中怎么动态的选择 LLM
算法
weixin_BYSJ19873 小时前
springboot校园自习室管理小程序---附源码32142
java·javascript·spring boot·python·django·flask·php