
leetcode 第一题 twoSum
初始化一个空的哈希表,用于存储已经遍历过的元素及其对应的下标。 遍历数组中的每一个元素 num: 如果遍历完整个数组都没有找到符合条件的两个数,返回空数组。 哈希表初始化:我们使用 遍历数组:对于每个元素 查找补数:检查哈希表中是否存在 存入哈希表:如果没有找到 返回结果:如果遍历完整个数组都没有找到符合条件的两个数,返回空向量。
发布日期:2021-05-12 18:45:27
浏览次数:21
分类:精选文章
本文共 1153 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要找到数组中两个数,使得它们的和等于给定的目标值,并返回这两个数的数组下标。我们可以通过优化的方法来实现这一目标,而不是使用暴力法,这样可以提高效率。
方法思路
我们可以使用哈希表(也称为集合)来优化这个问题。哈希表的查找操作平均时间复杂度为 O(1),因此可以显著降低整体的时间复杂度。
具体步骤如下:
- 计算目标值减去当前元素 num,得到所需的另一个数 complement。
- 检查哈希表中是否存在 complement。如果存在,说明已经找到了满足条件的两个数,返回这两个数的下标。
- 如果不存在 complement,将当前元素 num 和它的下标存入哈希表,继续下一个元素。
这种方法的时间复杂度为 O(n),空间复杂度为 O(n),因为我们需要存储所有元素到哈希表中。
解决代码
#include#include using namespace std;vector twoSum(vector nums, int target) { unordered_map hash_map; for (int i = 0; i < nums.size(); ++i) { int complement = target - nums[i]; if (hash_map.count(complement)) { return {hash_map[complement], i}; } hash_map[nums[i]] = i; } return {};}
代码解释
unordered_map
来存储元素及其对应的下标。键是元素的值,值是其在数组中的下标。nums[i]
,计算 complement
为 target - nums[i]
。complement
。如果存在,返回哈希表中 complement
的值(即下标)和当前元素的下标 i
。complement
,将当前元素及其下标存入哈希表。这种方法确保了在找到符合条件的两个数时,能够快速返回结果,从而提高了效率。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年05月18日 10时38分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux基础(六)--软Raid实现
2023-02-03
Linux基础-vim编辑器
2023-02-03
linux基础-第七单元 用户、群组及权限的深入讨论
2023-02-03
Linux基础命令cd,在使用时有哪些小技巧?
2023-02-03
linux基础命令学习之touch(2)
2023-02-03
linux基础命令笔记
2023-02-03
linux基础命令行
2023-02-03
Linux基础命令详解
2023-02-03
linux基础命令(3)
2023-02-03
linux基础知识整理
2023-02-03
Linux基础知识汇总(非常详细)从零基础入门到精通,看完这一篇就够了
2023-02-03
linux备份mysq脚本
2023-02-03
linux复习
2023-02-03
Linux多线程实践(5) --Posix信号量与互斥量解决生产者消费者问题
2023-02-03
Linux多线程工作笔记0001---多线程知识介绍
2023-02-03
Linux大文件拆分、合并、校验
2023-02-03
Linux大页内存管理等---菜鸟初学
2023-02-03
linux如何使用docker建立gitlab-runner
2023-02-03
Linux如何创建一个新进程
2023-02-03
Linux如何在一个 Crontab 中安排多个 Cron 作业?
2023-02-03