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

解决了所有问题!

相关推荐
wuweijianlove8 分钟前
算法性能的渐近与非渐近行为对比的技术4
算法
A__tao12 分钟前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢17 分钟前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
_dindong17 分钟前
cf1091div2 C.Grid Covering(数论)
c++·算法
AI成长日志17 分钟前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
迷藏49432 分钟前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
黎阳之光1 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
skywalker_111 小时前
力扣hot100-3(最长连续序列),4(移动零)
数据结构·算法·leetcode
6Hzlia1 小时前
【Hot 100 刷题计划】 LeetCode 17. 电话号码的字母组合 | C++ 回溯算法经典模板
c++·算法·leetcode
明日清晨1 小时前
python扫码登录dy
开发语言·python