LeetCode Hot 100:哈希

力扣HOT100哈希专题:从原理到面试实战 哈希表作为计算机科学中的基础数据结构,通过键值映射实现O(1)时间复杂度的快速查找。其核心原理是通过哈希函数将键转换为数组索引,这种思想被广泛应用于数据库索引、缓存系统等工程实践。在算法领域,哈希表能高效解决查找类问题,如力扣经典题目'两数之和'和'字母异位词分组'。大厂技术面试特别注重考察哈希表的应用能力,HOT100中的哈希题目覆盖了90%以上的面试考点。掌握哈希表的高级应用如LRU缓存设计和前缀和技巧,能显著提升算法解题效率。 阅读详情

LeetCode Hot 100:哈希

1. 两数之和

思路 1:暴力枚举

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int n = nums.size();
        for (int i = 0; i < n - 1; i++)
            for (int j = i + 1; j < n; j++)
                if (nums[i] + nums[j] == target)
                    return {i, j};
        return {-1, -1};
    }
};

思路 2:排序 + 双指针

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int n = nums.size();
        vector<pair<int, int>> comb;
        for (int i = 0; i < n; i++)
            comb.push_back(make_pair(nums[i], i));
        sort(comb.begin(), comb.end(),
             [&](const pair<int, int>& p1, const pair<int, int>& p2) {
                 return p1.first < p2.first;
             });

        int i = 0, j = n - 1;
        while (i < j) {
            if (comb[i].first + comb[j].first == target)
                return {comb[i].second, comb[j].second};
            else if (comb[i].first + comb[j].first > target)
                j--;
            else
                i++;
        }
        return {-1, -1};
    }
};

思路 3:一次遍历 + 哈希

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int n = nums.size();
        unordered_map<int, int> hashMap; // [num, idx]
        for (int i = 0; i < n; i++) {
            if (hashMap.find(target - nums[i]) != hashMap.end())
                return {hashMap[target - nums[i]], i};
            hashMap[nums[i]] = i;
        }
        return {-1, -1};
    }
};

49. 字母异位词分组

思路 1:哈希分组

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        if (strs.empty())
            return {};

        unordered_map<string, vector<string>> hashMap;
        for (string& s : strs) {
            string tmp = s;
            sort(tmp.begin(), tmp.end());
            hashMap[tmp].push_back(s);
        }
        vector<vector<string>> ans;
        for (auto& [tmp, vec] : hashMap)
            ans.push_back(vec);
        return ans;
    }
};

128. 最长连续序列

思路 1:哈希 + 单向寻找连续序列

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        if (nums.empty())
            return 0;

        unordered_set<int> hashSet;
        for (int& num : nums)
            hashSet.insert(num);

        int ans = INT_MIN;
        for (auto& num : hashSet) {
            if (hashSet.find(num - 1) == hashSet.end()) {
                int cur = num;
                int cnt = 1;
                while (hashSet.count(cur + 1)) {
                    cur++;
                    cnt++;
                }
                ans = max(ans, cnt);
            }
        }
        return ans;
    }
};

思路 2:哈希 + 双向寻找连续序列

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int> hash;
        // 把所有数字放到一个哈希表
        for (int& num : nums)
            hash.insert(num);
        int maxLen = 0;
        while (!hash.empty()) {
            auto cur = *(hash.begin());
            hash.erase(cur);
            int next = cur + 1, prev = cur - 1;
            while (hash.count(next)) {
                hash.erase(next);
                next++;
            }
            while (hash.count(prev)) {
                hash.erase(prev);
                prev--;
            }
            maxLen = max(maxLen, next - prev - 1);
        }
        return maxLen;
    }
};
08 rk3568 模拟smi mdio RTL8367RB(一) 前提需求:硬件连接普通gpio ,RTL8367RB需要mdio通信 使用的gpio是 MDC GPIO3_B3 (SMI时钟线) MDIO GPIO3_B4 (SMI数据线) 2. 数据结构与枚举 3.1 GPIO 初始化(地址映射) 内核无法直接访问物理地址,通过ioremap将 GPIO 控制器的物理地址映射为虚拟地址,后续通过虚拟地址操作 GPIO 寄存器。 3.2 设置引脚方向 3.3 设置电平 3.4 读取电平 6. SMI 总线时序实现 SMI 总线通信依赖严格的时序(起始信号、 阅读详情

相关推荐

数字IC后端笔记-libcell命名规则与标准单元库介绍

ND3D1BWP13T40P140HVTND3D1BWP13T40P140HVTTSMC两种工艺,Metalization Stack的截面示意图:还有一层AP用来走RDL,RDL这层是最厚的一层,一般用于连接IO的bump,信号线基本上不会用这层绕线。

sinat_41774721的博客 2465

LeetCode 热题 HOT 100 题解(仅记录解题思路)

由于数组中只有一个元素出现一次,其余元素都出现两次,因此用集合中的元素之和的两倍减去数组中的元素之和,剩下的数就是数组中只出现一次的数字。遍历数组中的每个数字,如果集合中没有该数字,则将该数字加入集合,如果集合中已经有该数字,则将该数字从集合中删除,最后剩下的数字就是只出现一次的数字。指针p1在头结点处,指针p2在头结点的next处,然后p1每次移动1格,p2则走2步,若在其中一个进入null之前两者指向同一结点,则代表有环。使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。

a131529的博客 1万+

[GXYCTF2019]BabyUpload1 -- .htaccess文件解析与蚁剑实战指南

本文深入解析了[GXYCTF2019]BabyUpload1文件上传漏洞的实战利用。通过绕过后缀名与内容检测,上传包含PHP代码的.jpg文件,并利用.htaccess文件强制服务器将其解析为PHP脚本。文章详细介绍了.htaccess的原理、构造方法、Content-Type绕过技巧,并演示了如何使用中国蚁剑连接Webshell获取Flag,为Web安全学习提供了完整实战指南。

weixin_29016315的博客 509

力扣Hot 100哈希算法实战:高频题型与优化技巧

哈希表作为数据结构中的核心组件,通过键值映射实现O(1)时间复杂度的快速查找。其核心原理是通过哈希函数将任意长度输入转换为固定长度输出,配合冲突处理机制解决数据碰撞问题。在算法面试和工程实践中,哈希技术能显著提升查找效率,特别适用于去重、缓存、快速匹配等场景。以力扣Hot 100题库为例,两数之和、字母异位词分组等高频题型都依赖哈希优化,其中前缀和+哈希的组合可将子数组问题从O(n²)优化到O(n)。实测数据显示,在处理10万级数据时,哈希表查询耗时仅5ms,较红黑树有5倍性能优势。针对LRU缓存等复杂场景

weixin_30086969的博客 198

Kafka 系列 —(17)Kafka 流式处理:Kafka Streams架构、使用场景、框架选择

本文介绍了KafkaStreams的架构特点、应用场景及与其他流处理框架的比较。KafkaStreams作为嵌入式分布式流处理库,其核心架构包含流处理器、任务、拓扑和本地状态存储,具备自动容错和伸缩能力。适用于实时监控、ETL、聚合、Join、物化视图等低延迟场景。与Flink、Spark相比,KafkaStreams适合简单架构和微服务,而Flink适合大规模处理,Spark更适合批处理。选择框架需根据具体场景需求,如微服务推荐KafkaStreams,大规模处理推荐Flink。

moton2017的博客 1631

AI对嵌入式的冲击分三波,大多数人只看到了第一波

摘要:AI对嵌入式行业的冲击将分三波递进:第一波(已发生)是代码生成,AI能完成底层驱动配置;第二波(1-2年内)是架构设计,AI将参与系统方案制定;第三波(2-3年)是需求验证,AI能穷举测试用例但无法替代安全决策。每波冲击都将重新定义工程师的价值标准,经验型工程师若不能将隐性知识转化为显性规则将面临淘汰。作者指出,完全不用AI的人第一波就会被淘汰,而仅满足于第一波应用的人将在后续冲击中落后。

u010898524的博客 962

力扣 Hot100 · 哈希篇:三道题吃透「哈希表」

题目哈希的角色套路两数之和存「值 → 下标」边遍历、边存、边查字母异位词分组存「key → 分组」算特征 key,同 key 归组最长连续序列存「是否存在」集合判存在 + 剪枝fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;哈希表① 映射两数之和:值→下标② 分组异位词:key→列表③ 判存在连续序列:集合查存在一句话。

weixin_52201538的博客 310

基于Simulink的电源纹波抑制仿真

电源纹波(Power Supply Ripple)是指直流电源输出中存在的交流分量。纹波的存在会导致电压波动,进而影响负载设备的性能和寿命。为了确保高质量的电源输出,通常需要设计有效的滤波电路来抑制纹波。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证电源纹波抑制方案。本教程将详细介绍如何使用 Simulink 进行电源纹波抑制的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行电源纹波抑制的仿真实例。背景介绍:理解电源纹波及其对电力电子系统的影响。仿真建模过程。

xiaoheshang_123的博客 514

力扣hot100:环形链表II(哈希算法与快慢指针法思路讲解)

本文比较了两种检测环形链表入口的方法:哈希表法和快慢指针法。哈希表法通过存储访问过的节点实现,时间复杂度O(n),空间复杂度O(n),实现简单直观。快慢指针法运用数学原理,先判断环存在再寻找入口,时间复杂度O(n)但空间复杂度仅O(1)。后者基于Floyd算法,通过指针移动的数学关系准确定位环入口,是面试推荐的优化解法。两种方法各具优势:哈希表法适合小数据量,快慢指针法则在空间敏感场景更优。理解这些算法不仅能解决环形链表问题,也为处理其他链表环问题奠定基础。

ze15829163918的博客 446

NXOpenC#-通用NX对象操作Tag,Handle,TaggedObject介绍

NXOpenC#-通用NX对象操作Tag,Handle,TaggedObject介绍

阿飞2018 1184

YOLOv12涨点改进 | CVPR 2026 |独家创新首发、特征融合改进篇 | 引入Local Attender 局部注意力算子融合模块,高效捕捉小目标和密集目标的局部上下文特征,助力高效涨点

🚀本文提出LocalAttender模块改进YOLOv12模型,通过局部注意力机制解决传统上采样方法的语义漂移问题。该模块采用固定偏移邻域加权聚合方式,在保持线性计算复杂度的同时有效捕捉小目标和密集目标的局部特征。实验表明,LocalAttender能显著提升检测精度而不增加过多计算负担,且与YOLOv12兼容性强。文章详细介绍了模块原理、实现方法和配置步骤,并提供了两种改进方案的具体yaml配置文件。这一创新为提升目标检测性能提供了高效解决方案。

Ai缝合怪、助力小伙伴高效发论文 118

LeetCode HOT100刷题笔记(一):哈希表, 双指针

ps:笔记和代码按本人理解整理,重思路

学习记录 1702

Gmsh+OCC对应版本库编译

输入 GMSH_DLL_EXPORT值C:\LIB\OCCT-7_8_0-i;9、如果只是生成库文件编译gmesh工程即可生成文件在C:\LIB\Gmsh\gmsh-4.13.1-Windows64-B\Debug 下gmsh.dll、gmsh.lib、gmsh.h、gmshc.h文件;3、CMAK编译Gmsh对应OCC版本的,CMAK选择源文件路径C:\LIB\Gmsh\gmsh-4.13.1-source,生成构建文件路径C:\LIB\Gmsh\gmsh-4.13.1-Windows64-B。

u013401364的博客 412

算法复盘——LeetCode hot100:哈希

LeetCode hot100:哈希

Xxx's Blog 1614

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LeetCode力扣-hot100系列(2):哈希与双指针实战精解

本文深入解析LeetCode Hot 100系列中哈希表与双指针两大核心算法。通过剖析两数之和、字母异位词分组、盛水容器、无重复字符子串等经典例题,详解哈希表如何以空间换时间实现O(1)查找,以及双指针如何通过左右指针、快慢指针和滑动窗口等模式高效处理数组与字符串问题,并提供实战代码与避坑指南,助力提升算法解题能力。

z4a5b6的博客 203

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

力扣HOT100哈希专题:从基础到实战的算法精讲

哈希表作为计算机科学中的基础数据结构,通过键值对映射实现高效数据检索,其核心原理是利用哈希函数将输入转换为固定大小的索引。这种设计使得查找、插入和删除操作的时间复杂度接近O(1),在算法优化中具有重要价值。在实际应用中,哈希技术广泛用于数据库索引、缓存系统和分布式存储等领域。本文以力扣HOT100高频题型为例,深入解析两数之和、字母异位词分组等经典问题,揭示哈希表在解决存在性判断、数据分组等场景的关键作用。特别针对算法面试中的哈希应用,提供了键值设计、冲突处理等实用技巧,帮助开发者掌握这一算法利器。

weixin_33226548的博客 19

前端力扣刷题 | 1:Hot100之 哈希

1. 两数之和:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。49. 字母异位词分组:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。128. 最长连续序列:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

2502_90366796的博客 856

刷穿LeetCode Hot 100:Day 1从哈希表与双指针开始

在数据结构与算法中,哈希表与双指针是两种基础而高效的解题范式。哈希表通过哈希函数将键映射到槽位,以空间换时间,实现O(1)的查找、去重与计数;双指针则借助一左一右或同向移动的方式,在有序场景或滑动窗口中把暴力枚举降阶。掌握两者的原理与适用边界,能显著提升算法面试中的解题效率,尤其适合时间有限的LeetCode Hot 100冲刺场景,其中大量高频题型都由这两种思路覆盖。本文从哈希表的三类应用、双指针的两种范式切入,结合两数之和、和为K的子数组、盛最多水的容器等经典题目,辨析复杂度优化与边界条件,并给出可落地

weixin_29281941的博客 334

力扣Hot100两数之和:从暴力解法到哈希优化

哈希表作为高效查找数据结构,通过键值映射实现O(1)时间复杂度查询,是算法优化的核心工具之一。在解决两数之和这类查找问题时,哈希表通过存储元素值与索引的对应关系,将暴力枚举的O(n²)复杂度优化为O(n)。这种空间换时间的策略在力扣Hot100等算法题库中具有典型性,尤其适用于大厂面试中的数组处理场景。实际工程中,类似思想广泛应用于电商凑单推荐、金融风控系统等需要快速匹配目标值的业务场景。掌握从暴力解法到哈希优化的思维跃迁,是算法能力提升的关键里程碑。

weixin_30231327的博客 315

力扣Hot100:缺失最小正整数的原地哈希解法

在算法面试中,原地哈希是一种重要的空间优化技术,它通过巧妙利用输入数据本身的存储空间来标记状态,避免了额外空间开销。其核心原理是将数组索引与元素值建立映射关系,通过交换操作将元素放置到'正确'位置。这种技术特别适合解决诸如'寻找缺失的最小正整数'这类问题,在力扣Hot100题库中频繁出现。实际工程中,类似思想可应用于数据库ID校验、内存管理等场景。本文以LeetCode第12题为例,详细解析如何通过原地哈希算法在O(n)时间复杂度和O(1)空间复杂度下解决问题,并对比了哈希表法、排序法等不同解法的优劣。掌握

weixin_29285605的博客 244

Hot 100 算法演义:哈希篇

本文以三国演义重构 LeetCode Hot 100 哈希名题。视“两数之和”为半符之约,借 HashMap 寻访天命知己;化“字母异位词”为虎符归营,凭排序验身集结诸侯;演“最长连续序列”为王朝更迭,用 HashSet 甄别真龙天子。拒绝枯燥代码,在乱世兵法中运筹帷幄,助你面试沙场谈笑破局,一统算法江山。

songYKX的博客 1060

LeetCode Hot 100刷题第一天:从哈希表与双指针开始

在算法面试准备中,时间复杂度和空间复杂度是绕不开的基础概念。哈希表通过键值对存储实现O(1)查询,本质上是空间换时间的经典策略;双指针则利用数组有序性或单调性,将暴力枚举的O(n²)复杂度降为线性遍历。这两类技巧覆盖了LeetCode Hot 100中近三分之一的题目,也是面试中最高频的考察点。从数组两数之和、字符串异位词分组,到链表环检测、滑动窗口最长子串,哈希与双指针广泛适用于各类数据结构题目。掌握它们不仅能快速解决特定题型,更能培养“缓存”与“收敛”的核心算法思维,为后续动态规划、图论等高阶内容打下坚

weixin_32006655的博客 200

LeetCode Hot 100 第7天

链接:题目链接 题解:代码: 2. 238 除自身以外数组的乘积 链接:题目链接 题解:代码: 3. 41 缺失的第一个正数 链接:题目链接 题解:代码: 如果对你有帮助,辛苦点个赞,谢谢啦,朋友!!!

奋斗小白的博客 372

LeetCode 热题 HOT 100:哈希表专题

题目包含:两数之和、字母异位词分组、只出现一次的数字、环形链表、环形链表 II

秀岩的博客 979

LeetCode Hot100哈希题全解析:从两数之和到最小覆盖子串

哈希表是算法面试中最高频的数据结构之一,其核心能力在于通过键值映射将查找耗时从 O(n) 降至平均 O(1),本质上是空间换时间的典型策略。在编程实践中,哈希表不仅用于去重和计数,还能完成分组、记录历史状态、加速滑动窗口等复杂任务。从两数之和的先查后存,到前缀和配合哈希统计子数组,再到字符频次与键值设计,哈希表贯穿了众多经典题型的解法。对于正在备战算法面试或刷题的学习者,理解哈希表的原理、键值设计思路以及易错细节,能够显著提升解题效率。本文以 LeetCode Hot100 为蓝本,系统拆解哈希表的三类核心

weixin_30402231的博客 305

LeetCode Hot 100(哈希篇)

本文介绍了三个基于哈希表的算法问题解决方案。1. 两数之和:使用哈希表存储元素和索引,通过查找补数实现O(n)时间复杂度的解法。2. 字母异位词分组:将排序后的字符串作为哈希表键值,将异位词分组存储。3. 最长连续序列:利用哈希表查找序列起点,计算最长连续序列长度。三个问题都充分利用了哈希表快速查找的特性,实现了高效的问题求解,时间复杂度均为O(n)或O(nmlogm),空间复杂度均为O(n)。

qq_56642160的博客 976

LeetCode Hot 100哈希篇:四道题吃透空间换时间核心思想

哈希表是算法面试中最常用的数据结构之一,核心价值在于用空间换时间,将查找复杂度从线性降至常数级。理解哈希表的存储逻辑与键值设计原理,是解决大量高频题的基础。从两数之和的补数查找,到前缀和统计子数组,哈希表的应用贯穿数组、字符串、滑动窗口等经典场景。本文以LeetCode Hot 100中哈希篇的四道代表题为例,深入拆解HashMap与HashSet的实际用法,包括自定义哈希键、集合去重、前缀和频率统计等关键技术点,并指出实现过程中的常见细节陷阱,帮助读者构建空间换时间直觉,为后续刷题打下扎实基础。

weixin_34072296的博客 298
上一篇: LeetCode Hot 100:链表
下一篇: LeetCode Hot 100:双指针
UestcXiye
博客等级 码龄8年 9030粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值