当前位置: 首页 > news >正文

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
http://www.jsqmd.com/news/1135546/

相关文章:

  • Sulphur-2视频生成模型:从Q3到Q8的终极量化指南
  • 【信息科学与工程学】【产品体系】第十二篇 制造业生产加工05 控制算法——工业生产中特定工艺场景的关键控制策略(1)
  • Apollo Save Tool:PS4游戏存档管理的本地化技术解决方案
  • 深度解析:Stability AI生成模型部署的5大实战技巧与问题解决
  • 3步掌握Balena Etcher:安全制作系统启动盘的终极指南
  • 如何快速实现智能面部追踪:OBS插件的完整指南
  • 从FNN到LSTM:4类神经网络结构演进与10个关键设计思想解析
  • Spring AI实现对话聊天-流式输出
  • 如何用纯文本终结时间管理焦虑:klog的极简主义解决方案
  • go-stock终极指南:三步解锁AI股票分析的核心能力
  • Si4732与STM32F413RH实现高保真数字音频接收方案
  • STAR 2.7.11b:高性能RNA-seq比对工具的5个核心技术优势解析
  • 重塑音乐体验:foobox-cn带你解锁foobar2000的视觉革命
  • 从三维网格到方块世界:ObjToSchematic如何实现3D模型到Minecraft的智能转换
  • 终极跨平台资源下载神器:5分钟掌握全网视频音频免费下载技巧
  • 三大解码引擎:QRazyBox如何重构破损二维码的数据世界
  • Beagle内存取证实战指南:企业级安全事件响应与可视化分析方案
  • 5分钟掌握camera-controls:打造流畅3D相机控制的终极指南 [特殊字符]
  • 【信息科学与工程学】【产品体系】第十二篇 制造业生产加工05 控制算法——智能控制与优化算法
  • 如何用MiMo-V2.5-DFlash处理音频?开发者必看的完整教程
  • HEIF Utility:解决Windows用户iPhone照片查看难题的终极方案
  • Flare-Game终极指南:如何快速上手这款免费2D动作RPG游戏
  • Okbiye 智能写作|分阶期刊论文创作工具,一站式搞定普刊 / 核心 / SCI 全投稿写作
  • 如何通过 docui 高效管理 Docker 网络与存储卷:终极指南
  • Nginx-RTMP-Win32深度解析:Windows平台流媒体服务器的架构设计与实战指南
  • 3步破解模型部署难题:BitNet转换工具实战指南
  • 《深入理解 RFC 793:传输控制协议(TCP)》
  • Oracle TNS监听器远程投毒漏洞CVE-2012-1675复现与防御指南
  • 【Claude Code】入门
  • 【Atlas】 Atlas 启动时常见的端口有哪些(如 21000)?