LeetCode 热题100-1

两数之和

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

进阶: 你可以想出一个时间复杂度小于 O(n2) 的算法吗?

python 复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        # 为了找到第二个数,即知道了a、a+b 进而找b
        hashmap = {}
        for idx,i in enumerate(nums):
            if i not in hashmap:
                if target-i not in hashmap:
                    hashmap[i] = idx
                else:
                    return [idx,hashmap[target-i]]
            else:
                if i+i == target:
                    return [hashmap[i],idx]

首先想到的是hash,不满足条件就将当前遍历到的元素放入hashmap中,到下一个元素的时候直接去hp中找有没有能够配对的,如果有直接return就好了。

(纯算法小白,记录一下刷力扣热题,不能再浑浑噩噩了!!)

相关推荐
dreadp43 分钟前
解锁豆瓣高清海报(二) 使用 OpenCV 拼接和压缩
图像处理·python·opencv·计算机视觉·数据分析
Tester_孙大壮1 小时前
第32章 测试驱动开发(TDD)的原理、实践、关联与争议(Python 版)
驱动开发·python·tdd
涛ing1 小时前
32. C 语言 安全函数( _s 尾缀)
linux·c语言·c++·vscode·算法·安全·vim
独正己身2 小时前
代码随想录day4
数据结构·c++·算法
小王子10244 小时前
设计模式Python版 组合模式
python·设计模式·组合模式
利刃大大5 小时前
【回溯+剪枝】找出所有子集的异或总和再求和 && 全排列Ⅱ
c++·算法·深度优先·剪枝
Rachela_z5 小时前
代码随想录算法训练营第十四天| 二叉树2
数据结构·算法
细嗅蔷薇@5 小时前
迪杰斯特拉(Dijkstra)算法
数据结构·算法
追求源于热爱!6 小时前
记5(一元逻辑回归+线性分类器+多元逻辑回归
算法·机器学习·逻辑回归
ElseWhereR6 小时前
C++ 写一个简单的加减法计算器
开发语言·c++·算法