【优选算法】专题十——哈希表
文章目录一、两数之和解题思路代码实现及解析总结二、面试题 01.02. 判定是否互为字符重排解题思路三、字母异位词分组解题思路代码实现及解析总结一、两数之和Leetcode链接给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 和为目标值 target 的那 两个 整数并返回它们的数组下标。你可以假设每种输入只会对应一个答案并且你不能使用两次相同的元素。你可以按任意顺序返回答案。解题思路暴力解法的遍历方法一般是固定一个数往后遍历来匹配。但是固定一个数往前遍历去与之匹配也完全是可以覆盖所有情况的。之所以介绍这种方法是因为它与哈希表的使用非常适配将固定过的元素放入哈希表而“往前遍历”这个操作就可以变为去哈希表中找哈希表放的都是之前固定过的的元素这样往前查找操作的时间复杂度就会变为O(1)。代码实现及解析classSolution{publicint[]twoSum(int[]nums,inttarget){MapInteger,IntegermapnewHashMap();for(inti0;inums.length;i){intkeytarget-nums[i];if(map.containsKey(key)){//前面找到了匹配值returnnewint[]{i,map.get(key)};}map.put(nums[i],i);//把该元素添加到Map中}returnnewint[]{-1,-1};}}总结复习解题思路中的往前遍历操作与哈希表的适配性二、面试题 01.02. 判定是否互为字符重排Leetcode链接给定两个由小写字母组成的字符串 s1 和 s2请编写一个程序确定其中一个字符串的字符重新排列后能否变成另一个字符串。仅说明简单解题思路解题思路一道经典的题目我们发现只要两个字符串中字母出现的个数是相等的就符合题意。所以我们先把第一个字符串丢入数组模拟的哈希表中统计出现次数然后直接遍历第二个字符串在哈希表将对应字母hash[字母]–同时判断此时哈希表中该位置是否减为0若不是则说明不符合题意也可以直接在开头判断两字符串长度是否相同进行优化。还有一种方法就是对字符串进行排序看是排序后否相等这个方法在下一题会有大用处三、字母异位词分组Leetcode链接给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 :输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]解释在 strs 中没有字符串可以通过重新排列来形成 “bat”。字符串 “nat” 和 “tan” 是字母异位词因为它们可以重新排列以形成彼此。字符串 “ate” “eat” 和 “tea” 是字母异位词因为它们可以重新排列以形成彼此。解题思路HashMap的一种巧妙用法遇到分组问题时将分组所用到的判断条件与存储该条件所对应元素的容器绑定起来。而且我们发先在这种情况下使用的判断条件一般只能是具有标识性的“key”值然后使用containsKey()来判断所以传统的 if(…) 语句来判断条件在这里就不适用了。这样直接就可以在哈希表中找到对应条件并得到相应容器将元素放入其中最后还可以使用map.values()将所有的分组都提取出来。如果按以前的做法用if语句来判断进行多轮分组就可能需要多次重复遍历数组每次遍历就只能进行一次分组。那所以在本题中我们用到的判断条件“key”值就是将字符串排序之后得到的同一组字符串所具有的唯一的标识。代码实现及解析classSolution{publicListListStringgroupAnagrams(String[]strs){MapString,ListStringmapnewHashMap();for(Stringstr:strs){char[]tmpstr.toCharArray();Arrays.sort(tmp);//排序StringkeynewString(tmp);if(!map.containsKey(key)){//如果不存在此分组就创建这种新的分组map.put(key,newArrayListString());}map.get(key).add(str);//将str放入对应分组依靠的就是排序后的标识性的key值}returnnewArrayListListString(map.values());}}总结复习解题思路中Map在分组问题上的巧用

相关新闻

Qwen 3.5 最新模型全面测评:特性、性能、实战案例一站式解析

Qwen 3.5 最新模型全面测评:特性、性能、实战案例一站式解析

2026年开年以来,AI圈轻量化模型赛道竞争白热化,OpenAI、谷歌、Meta纷纷布局轻量版模型,而阿里通义千问团队于3月正式发布的Qwen 3.5系列模型,以“小体量、大能力、全开源”的特点颠覆行业认知——不仅多款轻量化模型开源免费&…

2026/7/2 20:05:24 阅读更多 →
你发现没,网络安全越来越不好干了

你发现没,网络安全越来越不好干了

你发现没,网络安全越来越不好干了。前些年这行还是香饽饽,现在到处都在说优化、砍预算、项目难做。入行时都说是朝阳产业,缺口几十万,会点技术就不愁饭吃。这才几年,怎么就成卷王聚集地了?一、先认清现实&a…

2026/5/17 11:52:08 阅读更多 →
2026热门单机手游推荐 1000+多款安卓单机游戏 手柄的安卓游戏免费网盘下载

2026热门单机手游推荐 1000+多款安卓单机游戏 手柄的安卓游戏免费网盘下载

2026热门单机手游推荐 1000多款安卓单机游戏 手柄的安卓游戏免费网盘下载 2026热门单机手游推荐 游戏名称 游戏类型 核心特点 适合人群 《帕斯卡契约》硬核动作RPG国产良心作,类魂like玩法,打击感…

2026/5/17 11:52:08 阅读更多 →

最新新闻

基于YOLOv8的番茄叶片病变识别系统设计与实现

基于YOLOv8的番茄叶片病变识别系统设计与实现

1. 项目概述这个基于YOLOv8的番茄叶片病变识别系统是我在毕业设计期间完成的一个实用项目。作为一名计算机视觉方向的毕业生,我选择将深度学习技术应用于农业领域,解决传统病害检测方法效率低下的问题。系统能够自动识别番茄叶片上的多种常见病害&#x…

2026/7/4 17:08:57 阅读更多 →
Transformers.js终极指南:如何在浏览器中运行AI模型而无需服务器支持

Transformers.js终极指南:如何在浏览器中运行AI模型而无需服务器支持

Transformers.js终极指南:如何在浏览器中运行AI模型而无需服务器支持 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https…

2026/7/4 17:08:57 阅读更多 →
QRazyBox终极指南:5分钟学会修复损坏二维码的完整教程

QRazyBox终极指南:5分钟学会修复损坏二维码的完整教程

QRazyBox终极指南:5分钟学会修复损坏二维码的完整教程 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否遇到过这样的烦恼?重要的二维码因为打印模糊、表面划痕或图…

2026/7/4 17:06:57 阅读更多 →
如何在Windows和Linux上获得完整的AirPods体验:免费开源工具终极指南

如何在Windows和Linux上获得完整的AirPods体验:免费开源工具终极指南

如何在Windows和Linux上获得完整的AirPods体验:免费开源工具终极指南 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPodsDesktop …

2026/7/4 17:04:56 阅读更多 →
FanControl如何解决现代PC散热控制的技术挑战?

FanControl如何解决现代PC散热控制的技术挑战?

FanControl如何解决现代PC散热控制的技术挑战? 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCon…

2026/7/4 17:04:56 阅读更多 →
Web自动化测试全流程解析:从Selenium基础到CI/CD集成实战

Web自动化测试全流程解析:从Selenium基础到CI/CD集成实战

1. 项目概述:为什么我们需要Web自动化测试?在软件开发,尤其是Web应用开发的日常工作中,测试是一个绕不开的环节。想象一下,你刚刚完成了一个新功能的开发,比如一个复杂的用户注册表单。你需要验证它在Chrom…

2026/7/4 17:02:56 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻