【力扣hot100|从0-1的开始】哈希
哈希理解核心思想哈希的本质用空间换时间。具体体现如下正常查找数组查找O(n)哈希查找HashMap查找O(1)流程key → hash函数 → hash值 → 数组下标例keyabchash(abc)123456index123456%tableSizeHot100 哈希题型分类类型思维代表题查找是否存在一边遍历一边查两数之和统计次数计数有效字母异位词分组key相同归类字母异位词分组前缀信息记录历史状态和为K的子数组1️⃣ 两数之和 → 查找型 Hash2️⃣ 字母异位词分组 → 分组型 Hash3️⃣ 最长连续序列 → 集合型 Hash去重 O(1) 查找一、两数之和Hash查找模型思考Level 1方向性提示先不要急着想 两个数怎么组合。换个角度思考当你遍历数组时如果当前数字是 x其实你真正想找的是 另一个特定的数字。问自己一个问题如果当前数字是 x那另一个数字应该是多少把问题从找两个数变成找一个特定的数是否存在想一想有没有一种数据结构可以让你“快速判断一个数是否已经出现过”Level 2关键突破点当你遍历数组到某个数字 x 时你真正想找的是target - x例如nums [2,7,11,15]target 9当你看到x 7你其实在找9 - 7 2所以关键问题变成在之前遍历过的数字里 有没有 2 也就是说你需要在遍历过程中 记录之前出现过的数字并且能 快速判断某个数字是否已经出现过。思考两个问题1️⃣ 用什么数据结构可以快速判断一个数是否存在2️⃣ 如果找到了这个数你是否还需要知道它在数组里的位置题解publicint[]twoSum(int[]nums,inttarget){MapInteger,IntegermapnewHashMap();for(inti0;inums.length;i){intneedtarget-nums[i];if(map.containsKey(need)){returnnewint[]{map.get(need),i};}map.put(nums[i],i);}returnnewint[0];}核心点在于我们通过遍历数组得到target - nums[i]在map中寻找是否存在如果存在则得到答案。于是流程如下遍历数组↓计算 need target - nums[i]↓map 是否存在 need↓存在 → 返回不存在 → 存入 map二、字母异位词分组Hash分组模型Level 1方向性提示算法思想先观察题目的核心关系eat tea ate这些字符串为什么会被分到同一组因为它们有一个特点字符完全相同 只是顺序不同所以你需要思考一个问题有没有办法把 “字符相同但顺序不同” 的字符串转换成同一个特征表示如果可以做到多个字符串 → 同一个特征那这个特征就可以作为 HashMap 的 key 来进行分组。Level 2关键突破点现在思考一个非常关键的问题如何让eat tea ate变成同一个 key想象一种操作如果对字符串做某种 标准化处理让所有异位词都得到 相同的结果。例如eat → ? tea → ? ate → ?如果这个处理后的结果完全一样? ?那么你就可以用这个结果作为key然后把原字符串放到同一个 list 里。所以你的数据结构很可能是key - List题解publicListListStringgroupAnagrams(String[]strs){MapString,ListStringmapnewHashMap();for(Stringstr:strs){char[]charsstr.toCharArray();Arrays.sort(chars);StringkeynewString(chars);map.putIfAbsent(key,newArrayList());map.get(key).add(str);}returnnewArrayList(map.values());}核心点在于我们先将字符串数组进行遍历得到字符串排序这排序后的结果就相当于key将key放入到map中最终进行打印。流程图遍历字符串数组↓字符串排序↓得到key↓放入map三、最长连续序列题解publicintlongestConsecutive(int[]nums){SetIntegersetnewHashSet();for(intnum:nums){set.add(num);}intlongest0;for(intnum:set){if(!set.contains(num-1)){intcurrentnum;intlength1;while(set.contains(current1)){current;length;}longestMath.max(longest,length);}}returnlongest;}解题流程数组 → HashSet↓遍历每个 num↓如果 num-1 不存在↓开始向右扩展num1num2num3

相关新闻

Tao-8k数据库智能应用实战:结合MySQL的数据分析与报告生成

Tao-8k数据库智能应用实战:结合MySQL的数据分析与报告生成

Tao-8k数据库智能应用实战:结合MySQL的数据分析与报告生成 你是不是也经历过这样的场景?每天上班第一件事,就是打开数据库管理工具,写一堆复杂的SQL,从海量数据里捞出几个关键指标,然后复制粘贴到Excel&am…

2026/7/3 4:45:12 阅读更多 →
小白友好:Qwen All-in-One开箱即用,体验All-in-One架构魅力

小白友好:Qwen All-in-One开箱即用,体验All-in-One架构魅力

小白友好:Qwen All-in-One开箱即用,体验All-in-One架构魅力 1. 引言:一个模型,搞定所有? 想象一下,你正在开发一个智能应用,需要它既能理解用户文字里的情绪,又能像朋友一样和你聊…

2026/7/3 4:45:10 阅读更多 →
Qwen3-Coder-Next:80B参数只激活3B,如何用“小代价“训出最强编程智能体

Qwen3-Coder-Next:80B参数只激活3B,如何用“小代价“训出最强编程智能体

Qwen3-Coder-Next:80B参数只激活3B,如何用"小代价"训出最强编程智能体论文标题:Qwen3-Coder-Next Technical Report 作者:Qwen Team 机构:Alibaba Group 日期:2026-03 链接:https://a…

2026/7/3 4:45:06 阅读更多 →

最新新闻

SQL聚合函数实战:SQL Ultimate Course数据分析基础指南

SQL聚合函数实战:SQL Ultimate Course数据分析基础指南

SQL聚合函数实战:SQL Ultimate Course数据分析基础指南 【免费下载链接】sql-ultimate-course The most comprehensive SQL guide from a real-world expert! Learn everything from basics to advanced queries, optimizations, and real-world SQL 项目地址: h…

2026/7/4 6:46:51 阅读更多 →
switch.vim性能优化:大型代码库中的高效文本切换策略终极指南

switch.vim性能优化:大型代码库中的高效文本切换策略终极指南

switch.vim性能优化:大型代码库中的高效文本切换策略终极指南 【免费下载链接】switch.vim A simple Vim plugin to switch segments of text with predefined replacements 项目地址: https://gitcode.com/gh_mirrors/sw/switch.vim 你是否在大型代码库中频…

2026/7/4 6:46:51 阅读更多 →
如何智能切换DLSS版本:游戏性能优化的终极指南

如何智能切换DLSS版本:游戏性能优化的终极指南

如何智能切换DLSS版本:游戏性能优化的终极指南 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏卡顿而烦恼吗?想要提升游戏帧率却不知从何下手?DLSS Swapper正是你需要的游…

2026/7/4 6:44:51 阅读更多 →
CANN/asc-devkit LoadData矩阵搬运

CANN/asc-devkit LoadData矩阵搬运

# LoadData(2D矩阵搬运) 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景…

2026/7/4 6:44:51 阅读更多 →
终极音乐解析指南:4个PHP文件搞定四大平台音乐地址

终极音乐解析指南:4个PHP文件搞定四大平台音乐地址

终极音乐解析指南:4个PHP文件搞定四大平台音乐地址 【免费下载链接】music-api Music API 项目地址: https://gitcode.com/gh_mirrors/mu/music-api 还在为音乐平台API接口复杂而头疼吗?今天我要介绍一个简单实用的开源工具——music-api&#xf…

2026/7/4 6:42:50 阅读更多 →
ftpserver故障排除手册:常见问题诊断与解决方案大全

ftpserver故障排除手册:常见问题诊断与解决方案大全

ftpserver故障排除手册:常见问题诊断与解决方案大全 【免费下载链接】ftpserver Golang based autonomous FTP server with SFTP, S3, Dropbox, and Google Drive connectors. 项目地址: https://gitcode.com/gh_mirrors/ftp/ftpserver 作为一名Go语言开发的…

2026/7/4 6:40:50 阅读更多 →

日新闻

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 阅读更多 →

周新闻

月新闻