前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >蓝桥杯---关于哈希表的算法题目

蓝桥杯---关于哈希表的算法题目

原创
作者头像
阑梦清川
发布2025-03-19 23:29:13
发布2025-03-19 23:29:13
480
举报
文章被收录于专栏:学习成长指南学习成长指南

1.题目概述

fig:
fig:

2.代码分析

1)创建哈希表,看看我们的这个元素在这个哈希表里面是不是存在的,存在的话就是返回true即可,不不存在就把我们的这个元素添加到这个哈希表里面去即可;

2)其实就是我们的这个遍历到的这个元素和我们的哈希表里面的元素比较,这个哈希表里面的元素就是他前面的这些元素罢了;

fig:
fig:

3.类似问题

这个题目是在上面的基础上添加了这个相差的索引的限制,也就是下面的这个k参数,示例一里面的这个nums里面有两个1,下标分别是0,3相差就是3-0=0正好满足这个题目的abs<=k所以这个返回值就是true;

第二个示例里面的三个1,虽然这个第一个和第三个的下标的作差结果是2>k,但是第三个1和第四个1是满足条件的,所以返回的还是true,以此类推;

fig:
fig:

4.代码分析II

1)创建哈希表进行遍历;

2)看看这个数组里面的元素在不在这个哈希表里面呢?

3)存在的话,就看看这个下标的差值和我们的k进行比较,满足条件直接返回这个true,否则就把这个元素添加到这个哈希表里面去;

4)一直到最后的话,说明没有满足条件的,直接返回的就是false;

fig:
fig:

5.字母异位词

就是我们的这个数组里面有没有字符串是一样的字符,但是顺序不相同组成的,例如这个示例一里面的这个eat和tea就是三个字母变换顺序得到的;

最后返回的就是这个相同的字母异位词组成的这个数组,拼接成为新的数组即可;

fig:
fig:

6.思路分析

思路就分为两步:排序+判断;

排序:就是对于我们的字符串进行排序,按照这个字典序进行排列即可,例如这个里面的eat排列之后就是aet,发现这个在我们的哈希表里面没有,我们把这个放进去,这个时候是我们排序之后的字符串充当为key值,这个eat也就是我们的原始的字符串充当为value值,以此类推,第二个元素tea经过这个排序之后,放线和这个第一个索引是一样的,因此直接放到我们的这个aet这个key对应的列表里面就可以了;

当我们遇到这个tan的时候,他排序结束之后就是ant,发现这个是没有的,这个时候向我们的这个hash表里面去添加这个索引,并且把我们的这个原始的字符串放进去,以此类推即可,最后返回的就是哈希表里面的value里面的内容;

fig:
fig:

7.代码分析

1)我觉得这个代码是稍微有些难以理解的,对于我这种基础比较薄弱的同学来讲;

2)首先就是对于这个hash的创建,这个k-v分别代表的是什么,这个是需要我们清楚地知道的;

3)对于这个身体乳进行遍历的过程中,转换成为字符数组方便我们进行这个后续的操作;

4)对于这个字符数组进行排序,看看这个key在我们的这个hash里面是不是存在的,没有存在就放到这个hash表里面去,存在的话,就是get(key)----表示找到这个键对应的数组,add(s)表示把我们的这个字符串放到这个数组里面去即可;

5)最后我们需要返回的,就是我们的这个哈希表里面的这个value里面的这个内容;

fig:
fig:

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.题目概述
  • 2.代码分析
  • 3.类似问题
  • 4.代码分析II
  • 5.字母异位词
  • 6.思路分析
  • 7.代码分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档