当前位置: 首页 > news >正文

力扣题解:1、两数之和 (梦开始的地方)

力扣的第一个题可能会让大家放松警惕,但是对于刚开始刷题的小伙伴,这道题并不简单,我相信大多数小伙伴都是和我一样,先双循环暴力解题,然后超时。

而官方给出的哈希表解法,为这道题提供了一种全新的思路。然而,对于使用 C 语言的小伙伴来说,却又遇到了新的难题。C 语言标准库中并没有哈希表的内容,这意味着我们需要自己动手实现哈希表。如果选择使用线性哈希表,又会面临空间容量过大的问题,这无疑增加了解题的难度。

所以我们这题通常用C++的解法,本题呢,我就需要一个集合来存放我们遍历过的元素,然后在遍历数组的时候去询问这个集合,某元素是否遍历过,也就是 是否出现在这个集合。

我们不仅要知道元素有没有遍历过,还要知道这个元素对应的下标,需要使用 key value结构来存放,key来存元素,value来存下标,那么使用map正合适

因为我们不需要让集合的内容有序,所以本题我们使用的时unordered _map。

(如果有只用C语言的小伙伴,可以看一下C++的内容,在基础语法方面是大差不差的,可以简单了解派生、继承、封装,然后学一下STL部分的容器(vector  set map)就可以用C++进行解题了。)

具体解题思路:

  1. 使用哈希表存储元素及其下标

    • 使用一个 unordered _map(哈希表)来存储数组中的元素及其对应的下标。这样可以在常数时间内查找某个元素是否存在。

    • 哈希表的键是数组中的元素值,值是该元素的下标。

  2. 遍历数组

    • 遍历数组 ,对于每个元素nums[i] ,计算 it=target-nums[i]

    • 检查 i t 是否已经在哈希表中:

      • 如果在,说明找到了满足条件的两个元素,返回它们的下标。

      • 如果不在,将当前元素及其下标存入哈希表。

  3. 返回结果

    • 如果找到满足条件的两个元素,返回它们的下标。

    • 如果遍历结束后仍未找到满足条件的元素,返回一个空的向量。

以下是代码和解析:

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {
//创建map容器存储遍历结果std::unordered_map<int,int>m;for(int i=0;i<nums.size();i++)        {
//创建迭代器寻找目标值auto it=m.find(target-nums[i]);
/当迭代器不为end时,代表找到目标值if(it!=m.end()){
//找到目标值后创建结果容器,两个值的下标都放入容器Vvector<int>v;v.push_back(i);
//map的val是数组下标,所以放入v的是it->secondv.push_back(it->second);return v;}
//遍历数组,放入mapm.insert(make_pair(nums[i],i));}
//如果没有则返回空容器vector<int>emmpty;return emmpty;}
};

相关文章:

  • 教育系统源码如何支持白板直播与刷题功能?功能开发与优化探索
  • M0的基础篇之PWM学习
  • 《Python星球日记》 第53天:卷积神经网络(CNN)入门
  • SwarmUI:基于.Net开发的开源AI 图像生成 Web 用户界面系统
  • 如何将 Windows 11 的开始菜单移到左侧
  • JVM 逃逸分析
  • 第十课认识约数
  • Go多服务项目结构优化:为何每个服务单独设置internal目录?
  • 猿人学第十七题—天杀的http2.0
  • 在 Vue 3 中实现刮刮乐抽奖
  • 牛客练习赛138
  • PTA:jmu-ds-拓扑排序
  • JDBC链接数据库
  • 程序代码篇---Python视频流
  • OrangePi Zero 3学习笔记(Android篇)5 - usbutils编译(更新lsusb)
  • DVWA靶场Cryptography模块medium不看原码做法
  • kubectl top 查询pod连接数
  • Go基于plugin的热更新初体验
  • 【赵渝强老师】TiDB SQL层的工作机制
  • 数据分析2
  • 社恐也能嗨起来,《孤独摇滚》千人观影齐舞荧光棒
  • 伊朗外长称正与美国进行“善意”的会谈
  • 广西百色通报:极端强对流天气致墙体倒塌,3人遇难7人受伤
  • 上海市委常委会会议暨市生态文明建设领导小组会议研究基层减负、生态环保等事项
  • 三大猪企4月生猪销量同比均增长,销售均价同比小幅下降
  • Meta正为AI眼镜开发人脸识别功能