news 2026/7/6 15:24:49

LeetCode Hot 100(哈希篇)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode Hot 100(哈希篇)

1. 两数之和

很多涉及两个变量的题目,都可以枚举其中一个变量,把它当成常量看待,从而转换成一个变量的问题。代码实现时,通常来说枚举右,维护左是更加好写的

时间复杂度:O ( n ) O(n)O(n)

空间复杂度:O ( n ) O(n)O(n)

Java 代码:

classSolution{publicint[]twoSum(int[]nums,inttarget){Map<Integer,Integer>cnt=newHashMap<>();for(inti=0;i<nums.length;i++){if(cnt.containsKey(target-nums[i])){returnnewint[]{cnt.get(target-nums[i]),i};}cnt.put(nums[i],i);}returnnewint[]{-1,-1};}}

Python 代码:

classSolution:deftwoSum(self,nums:List[int],target:int)->List[int]:dic={}foriinrange(0,len(nums)):x=target-nums[i]ifxindic:return[i,dic[x]]dic[nums[i]]=ireturn[-1,-1]

49. 字母异位词分组

如果两个字符串是字母异位词,那经过排序之后,两个字符串是一样的。把经排序后的字符串作为哈希表的 key,这个可以映射到这个 key 的就是同一组的。

时间复杂度:O ( n m l o g m ) O(nmlogm)O(nmlogm)

空间复杂度:O ( n ) O(n)O(n)

Java 代码:

classSolution{publicList<List<String>>groupAnagrams(String[]strs){Map<String,List<String>>cnt=newHashMap<>();for(Stringstr:strs){char[]charStr=str.toCharArray();Arrays.sort(charStr);StringsortStr=newString(charStr);if(cnt.containsKey(sortStr)){cnt.get(sortStr).add(str);}else{cnt.put(sortStr,newArrayList<>(Arrays.asList(str)));}}List<List<String>>ans=newArrayList<>();for(Stringkey:cnt.keySet()){ans.add(cnt.get(key));}returnans;}}

Python 代码:

classSolution:defgroupAnagrams(self,strs:List[str])->List[List[str]]:dic={}forsinstrs:sortedStr="".join(sorted(s))ifsortedStrindic:dic[sortedStr].append(s)else:dic[sortedStr]=[s]ans=[]forkindic.keys():ans.append(dic[k])returnans

128. 最长连续序列

对于数组中的每一个序列都从该序列的最开始记录长度。利用哈希表,首先将数组中的元素全部存储到哈希表中,对于数组中的一个数 x 如果哈希表中记录有 x-1,则说明 x 不是一个连续序列的开始,直接跳过,直到找到一个序列的首位,开始递增的查询连续序列是否存在,查询结束时也就知道了以 x 开始的最长连续序列的长度,最后再记录 x 已经被记录过最长连续序列,避免重复计算。

时间复杂度:O ( n ) O(n)O(n)

空间复杂度:O ( n ) O(n)O(n)

Java代码:

classSolution{publicintlongestConsecutive(int[]nums){Set<Integer>set=newHashSet<>();for(intnum:nums){set.add(num);}intans=0;for(inti=0;i<nums.length;i++){if(set.contains(nums[i]-1)){continue;}inttmp=nums[i];while(set.contains(tmp)){set.remove(tmp);tmp++;}ans=Math.max(ans,tmp-nums[i]);}returnans;}}

Python 代码:

classSolution:deflongestConsecutive(self,nums:List[int])->int:s=set(nums)ans=0forxins:if(x-1)ins:continuet=xwhiletins:t+=1ans=max(ans,t-x)returnans
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 15:22:52

Docker-Radarr终极部署指南:5分钟搭建专业电影自动化管理系统

Docker-Radarr终极部署指南&#xff1a;5分钟搭建专业电影自动化管理系统 【免费下载链接】docker-radarr 项目地址: https://gitcode.com/gh_mirrors/do/docker-radarr 在数字媒体时代&#xff0c;电影自动化管理已成为现代家庭影院和媒体服务器的核心需求。Docker-Ra…

作者头像 李华
网站建设 2026/7/6 15:22:14

抠图神器(图片背景色去除)-Rembg介绍

亲测&#xff0c;强力推荐绝对好东西&#xff01;&#xff01;&#xff01; Rembg 简介 Rembg 是一个开源的 Python 工具库&#xff0c;专注于图像背景移除&#xff08;Image Background Removal&#xff09;。它通过预训练的深度学习模型自动分离图像中的前景&#xff08;如人…

作者头像 李华
网站建设 2026/7/6 15:19:44

企业中间件安全加固实战:从SQL注入漏洞到深度防御配置

1. 项目概述&#xff1a;从一次漏洞复现到安全配置的深度思考最近在安全圈里&#xff0c;泛微云桥e-Bridge的SQL注入漏洞又被翻出来讨论了。很多朋友热衷于复现漏洞、写个POC、发个文章&#xff0c;然后这事儿就算完了。但作为一个在企业里摸爬滚打了十多年的老运维和安全工程师…

作者头像 李华
网站建设 2026/7/6 15:19:01

如何为QQNT桌面客户端部署LiteLoader插件加载器

如何为QQNT桌面客户端部署LiteLoader插件加载器 【免费下载链接】LiteLoaderQQNT_Install 针对 LiteLoaderQQNT 的安装脚本 项目地址: https://gitcode.com/gh_mirrors/li/LiteLoaderQQNT_Install 如果你正在寻找一种能够扩展QQNT桌面客户端功能的方法&#xff0c;LiteL…

作者头像 李华
网站建设 2026/7/6 15:16:25

如何用MiMo-V2.5-DFlash处理音频?开发者必看的完整教程

如何用MiMo-V2.5-DFlash处理音频&#xff1f;开发者必看的完整教程 【免费下载链接】MiMo-V2.5-DFlash 项目地址: https://ai.gitcode.com/XiaomiMiMo/MiMo-V2.5-DFlash MiMo-V2.5-DFlash是一款强大的多模态AI模型&#xff0c;专门为音频处理和分析而设计。这款模型能够…

作者头像 李华