前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >有人相爱,有人夜里看海,有人Leetcode第一题搞不出来

有人相爱,有人夜里看海,有人Leetcode第一题搞不出来

原创
作者头像
阑梦清川
发布2025-03-17 11:31:47
发布2025-03-17 11:31:47
280
举报
文章被收录于专栏:学习成长指南学习成长指南

有人相爱,有人夜里看海,有人Leetcode第一题搞不出来~~

1.题目概述

这个题目的题意是很容易理解的,就是两个数据的求和等于这个给定的参数,其中两个数据来自于我们的这个数组里面的两个数据,我们需要找到的就是符合条件的数据,返回的是一个数组,这个数组里面的内容就是给定的这个数据对应的下标;

就拿这个里面的第一个案例来说吧,这个是target=9,也就是两个数据的求和等于9,正好这个数组里面的第一个元素和第二个元素的求和结果就是9,因此返回的就是两个数据对应的这个下标即可;

fig:
fig:

2.思路分析

2.1第一个暴力方法

暴力的解法就是我们每一个都需要进行判断,每一个组合的情况都进行考虑,这个时候所有符合的情况都会被找到,返回这个对应的下标,这个里面只需要使用两层的这个for循环就是可以搞定的;

2.2第二个优化的解法

第二个方法就是使用的我们的哈希表的解法,我们从前向后挨个的进行遍历的操作,第一个元素是2,我们去哈希表里面找9=2=7,也就是我们需要7,看看这个7在我们的哈希表里面是不是存在的;

这个哈希表是如何构造出来的呢?就是我们的这个这个元素前面的所有数组组成的,每一个元素判断之后都会被放到这个哈希表里面去;但是因为我们的这个2就是数组里面的第一个元素,所以轮到他的时候这个时候的哈希表里面是没有任何的这个元素的,因此这个时候不需要判断;

轮到7的时候,2因为已经判断过了,所以这个2就会丢进哈希表里面去,也就是7前面的所有元素,这个时候需要的元素就是target-nums[i],去哈希表里面去找这个元素,发现找到了,这个时候返回两个数据的下标就可以了,以此类推,知道找到我们数组里面的最后一个元素为止;

fig:
fig:

3.两个方法的代码解析

3.1暴力解法统统考虑

两层的这个for循环就是可以搞定的,第一层确定的事我们目前遍历的这个元素,第二层就是从他的下一个元素开始,一直到我们的数组里面的最后一个元素才停止;

nums[i]+nums[j]如果两个的和就是我们的目标值,这个时候返回对应的这个下标就可以了;

fig:
fig:

3.2哈希表的优化

这个时候哈希表里面的两个元素:第一个是我们的具体的数字,第二个就是我们的这个数值对应的当前的下标,x求得就是我们需要的元素,if判断我们的哈希表里面是不是存在我们想要的这个元素,这个时候找到的话返回的就是我们的i和这个哈希表里面的元素对应的下标;

没找到put就是把这个元素放到这个哈希表里面去,继续去找下一个元素即可,开始新一轮的这个操作;

fig:
fig:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.题目概述
  • 2.思路分析
    • 2.1第一个暴力方法
    • 2.2第二个优化的解法
  • 3.两个方法的代码解析
    • 3.1暴力解法统统考虑
    • 3.2哈希表的优化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档