标签:哈希表

数据结构与算法刷题之【哈希表】篇

<p>汇总哈希表相关的数据结构与算法刷题笔记,讲解哈希表基础理论、常见映射与去重技巧,并结合剑指offer、力扣题目给出数组、字符串等场景下的Java实现与优化思路。</p>

leetcode【哈希表—简单】242.有效的字母异位词

<p>本文讲解 LeetCode 242 有效的字母异位词,判断两个字符串是否互为字母异位词。文章给出题目描述和调试代码,先分析会超时的暴力法,再重点介绍用长度为 26 的数组统计字符次数的哈希法,并给出多种 Java API 与 stream 的优化写法。</p>

leetcode【哈希表—简单】349.两个数组的交集

<p>本文记录 LeetCode 349 两个数组的交集的解法,要求结果元素唯一且不考虑输出顺序。文章给出题目描述与调试代码,介绍借助 Set 集合去重的思路:先把第一个数组存入 set1,再遍历第二个数组判断元素是否命中,从而得到交集。</p>

leetcode【哈希表—简单】202.快乐数

<p>本文讲解 LeetCode 202 快乐数的判断方法,需识别数位平方和过程中是否陷入无限循环。文章给出题目描述与调试代码,介绍用 HashSet 记录出现过的数,一旦重复即说明会无限循环,并配合数位平方和的辅助函数完成求解。</p>

leetcode【哈希表—简单】1.两数之和

<p>本文记录 LeetCode 1 两数之和的解题过程,要求在数组中找出和为目标值的两个下标。文章给出题目描述与调试代码,先介绍 O(n²) 的暴力解法,再重点讲解利用 HashMap 边遍历边查找补数的 O(n) 哈希解法以及双指针优化。</p>

leetcode【哈希表—中等】454.四数相加 II

<p>本文讲解 LeetCode 454 四数相加 II,统计四个数组中和为 0 的元组个数。文章给出题目描述与调试代码,介绍把前两组之和存入 HashMap 并记录次数、再遍历后两组查找相反数的分组哈希法,并附上手写 Map 提升效率的版本。</p>

leetcode【哈希表—简单】383.赎金信

<p>本文记录 LeetCode 383 赎金信的判断方法,要求赎金信字符串能由杂志字符串中的字符构成。文章给出题目描述与调试代码,利用仅含小写字母的特点,用长度 26 的数组统计杂志字符次数,再遍历赎金信逐个抵消完成校验。</p>

leetcode【哈希表—中等】三数之和

<p>本文讲解 LeetCode 15 三数之和,要求找出所有和为 0 且不重复的三元组。文章给出题目描述与调试代码,介绍排序后固定一个数、再用左右双指针收缩的解法,并讲解去重与提前剪枝的优化,使运行效率进一步提升。</p>

leetcode【栈与队列—中等】347.前 K 个高频元素

<p>本文讲解 LeetCode 347 前 K 个高频元素,返回出现频率最高的 k 个元素。文章给出题目描述与调试代码,介绍用哈希表统计频率后配合小顶堆维护前 k 个的解法,以及先排序再遍历入优先队列的第二种实现思路。</p>

LeetCode 141. 环形链表

<p>本文讲解 LeetCode 第 141 题「环形链表」,判断链表中是否存在环。分别给出哈希表与快慢指针两种解法:哈希表记录访问过的节点,快慢指针则利用速度差在 O(1) 空间内判断是否相遇,并附完整 Java 代码与图解。</p>

LeetCode 169. 多数元素

<p>本文讲解 LeetCode 第 169 题「多数元素」,找出数组中出现次数超过 n/2 的元素。给出哈希表计数、排序取中位值与 Boyer-Moore 投票算法三种解法,其中投票算法可在 O(n) 时间、O(1) 空间内求得众数。</p>