news 2026/8/8 0:42:52

【算法专题】哈希表:从“两数之和”到“最长连续序列”的深度解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【算法专题】哈希表:从“两数之和”到“最长连续序列”的深度解析
【算法专题】哈希表:从“两数之和”到“最长连续序列”的深度解析

我的主页:寻星探路
个人专栏:《JAVA(SE)----如此简单!!! 》 《从青铜到王者,就差这讲数据结构!!!》
《数据库那些事!!!》 《JavaEE 初阶启程记:跟我走不踩坑》
《JavaEE 进阶:从架构到落地实战 》 《测试开发漫谈》
《测开视角・力扣算法通关》 《从 0 到 1 刷力扣:算法 + 代码双提升》
《Python 全栈测试开发之路》
没有人天生就会编程,但我生来倔强!!!

寻星探路的个人简介:


在 LeetCode 刷题过程中,哈希表(Hash Table)是出现频率最高、应用最广的数据结构之一。它的核心价值在于:**将原本需要 甚至 的查找时间复杂度降低到 **。

本文将通过三道经典题目,带你由浅入深掌握哈希表的应用精髓。


一、 两数之和 (Two Sum)

1. 题目描述

给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

2. 解题思路:空间换时间

最朴素的方法是暴力双循环,时间复杂度为 。
利用哈希表,我们可以在遍历数组的同时,记录下每一个数字及其下标。对于当前的数字nums[i],我们只需要去哈希表中查找是否存在target - nums[i]

3. 代码实现 (Java)

classSolution{publicint[]twoSum(int[]nums,inttarget){// Key: 数值, Value: 下标Map<Integer,Integer>map=newHashMap<>();for(inti=0;i<nums.length;i++){// 先检查补数是否存在if(map.containsKey(target-nums[i])){returnnewint[]{map.get(target-nums[i]),i};}// 再将当前元素存入 mapmap.put(nums[i],i);}returnnewint[0];}}

二、 字母异位词分组 (Group Anagrams)

1. 题目描述

给你一个字符串数组,请你将字母异位词组合在一起。字母异位词是由重新排列源单词的字母得到的一个新单词(例如 “eat” 和 “tea”)。

2. 解题思路:寻找“公共特征”作为 Key

字母异位词的特点是:虽然字母顺序不同,但排序后的字符串是完全相同的
因此,我们可以将“排序后的字符串”作为哈希表的Key,将“原始字符串列表”作为Value

3. 代码实现 (Java)

classSolution{publicList<List<String>>groupAnagrams(String[]strs){Map<String,List<String>>map=newHashMap<>();for(Stringstr:strs){// 将字符串转为字符数组并排序char[]array=str.toCharArray();Arrays.sort(array);Stringkey=newString(array);// 获取对应的分组列表,若不存在则创建List<String>list=map.getOrDefault(key,newArrayList<String>());list.add(str);map.put(key,list);}returnnewArrayList<List<String>>(map.values());}}

三、 最长连续序列 (Longest Consecutive Sequence)

1. 题目描述

给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。要求时间复杂度为 。

### 2. 解题思路:去重与逻辑跳过

由于要求 ,我们不能进行全局排序。

  1. 使用HashSet存储所有数字,实现 查询。
  2. 遍历集合中的每个数num
  3. 关键点:如果num - 1存在于集合中,说明num不是连续序列的起点,直接跳过。只有当num是起点时(即num - 1不存在),才开始循环匹配num + 1, num + 2...

3. 代码实现 (Java)

classSolution{publicintlongestConsecutive(int[]nums){Set<Integer>num_set=newHashSet<Integer>();for(intnum:nums){num_set.add(num);}intlongestStreak=0;for(intnum:num_set){// 只有当 num 是序列起点时才开始计算if(!num_set.contains(num-1)){intcurrentNum=num;intcurrentStreak=1;while(num_set.contains(currentNum+1)){currentNum+=1;currentStreak+=1;}longestStreak=Math.max(longestStreak,currentStreak);}}returnlongestStreak;}}

💡 总结:哈希表类题目的思考通用公式

面对哈希表题目,可以按照以下三个步骤进行思考:

1. 明确“我们要找什么?”

  • 查找是否存在?—— 使用HashSet
  • 查找对应的关联信息(下标、次数、分组)?—— 使用HashMap

2. 寻找“不变的 Key”

这是哈希表题目的灵魂。你需要找到一个特征,让所有符合条件的元素都能映射到同一个 Key 上:

  • 两数之和:Key 是数字本身,通过target - x寻找关联。
  • 字母异位词:Key 是排序后的字符串(或字符计数的数组)。
  • 分组/去重:Key 是能够代表该类别唯一特征的值。

3. 优化“遍历的冗余”

在“最长连续序列”中,我们通过!num_set.contains(num - 1)过滤掉了大量的重复计算。在处理哈希表时,思考**“我是否在重复处理同一个序列?”“我能否在一次遍历中同时完成存入和查找?”**(如两数之和),是提升算法效率的关键。


感谢阅读!如果觉得有帮助,欢迎点赞、收藏、关注!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/4 20:21:47

GTE中文语义相似度服务实战:智能推荐系统核心模块

GTE中文语义相似度服务实战&#xff1a;智能推荐系统核心模块 1. 引言&#xff1a;语义相似度在智能推荐中的关键作用 在现代智能推荐系统中&#xff0c;传统的关键词匹配已无法满足用户对内容理解深度的需求。以电商平台为例&#xff0c;当用户搜索“苹果真甜”&#xff0c;…

作者头像 李华
网站建设 2026/8/4 20:22:45

中文情感分析模型对比:StructBERT vs 传统方法

中文情感分析模型对比&#xff1a;StructBERT vs 传统方法 1. 引言&#xff1a;中文情感分析的技术演进与选型挑战 随着社交媒体、电商平台和用户评论系统的普及&#xff0c;中文情感分析已成为自然语言处理&#xff08;NLP&#xff09;中最具实用价值的场景之一。其核心任务…

作者头像 李华
网站建设 2026/8/2 12:34:56

StructBERT部署案例:用户反馈情感分析教程

StructBERT部署案例&#xff1a;用户反馈情感分析教程 1. 引言&#xff1a;中文情感分析的现实价值 在当今数字化时代&#xff0c;企业每天都会收到来自社交媒体、客服系统、电商平台等渠道的海量用户反馈。如何快速理解这些文本背后的情绪倾向&#xff0c;成为提升服务质量、…

作者头像 李华
网站建设 2026/7/29 18:14:25

没技术背景玩AI安全?保姆教程+云端GPU

没技术背景玩AI安全&#xff1f;保姆教程云端GPU 引言&#xff1a;小企业也能轻松上手的AI安全方案 作为小企业老板&#xff0c;你可能经常听说"AI安全""行为分析"这些高大上的技术名词&#xff0c;但又被复杂的安装配置吓退。其实现在的AI安全工具已经像…

作者头像 李华
网站建设 2026/8/3 7:33:38

2026必备!专科生毕业论文AI论文平台TOP8测评

2026必备&#xff01;专科生毕业论文AI论文平台TOP8测评 2026年专科生毕业论文AI平台测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着人工智能技术在教育领域的不断渗透&#xff0c;越来越多的专科生开始依赖AI论文平台来辅助完成毕业论文写作。然而&#xff0c;面对市…

作者头像 李华
网站建设 2026/7/29 18:11:07

实体识别模型选型困惑?云端AB测试3方案,8块钱就有答案

实体识别模型选型困惑&#xff1f;云端AB测试3方案&#xff0c;8块钱就有答案 引言 作为技术决策者&#xff0c;你是否经常遇到这样的困境&#xff1a;面对GitHub上琳琅满目的开源实体识别模型&#xff08;如BERT-CRF、BiLSTM-CRF、SpanNER等&#xff09;&#xff0c;每个项目…

作者头像 李华