【Leetcode-Hot100】字母异位词分组

题目

解答

排序哈希表方法

其中,key="".join(sorted(str))使用的原因可以被拆解为:str是一个字符串,例如'abc',当使用sorted进行排序后,返回的是一个个字母组成的列表['a', 'b', 'c'],因此使用join后,会将字母重新组合为字符串,传送给key。

  • 时间复杂度nklogk,空间复杂度nk

计数哈希表方法

  • 时间复杂度:O(n(k+∣Σ∣)),其中 n 是 strs 中的字符串的数量,k 是 strs 中的字符串的的最大长度,Σ 是字符集,在本题中字符集为所有小写字母,∣Σ∣=26。需要遍历 n 个字符串,对于每个字符串,需要 O(k) 的时间计算每个字母出现的次数,O(∣Σ∣) 的时间生成哈希表的键,以及 O(1) 的时间更新哈希表,因此总时间复杂度是 O(n(k+∣Σ∣))。

  • 空间复杂度:O(n(k+∣Σ∣)),其中 n 是 strs 中的字符串的数量,k 是 strs 中的字符串的最大长度,Σ 是字符集,在本题中字符集为所有小写字母,∣Σ∣=26。需要用哈希表存储全部字符串,而记录每个字符串中每个字母出现次数的数组需要的空间为 O(∣Σ∣),在渐进意义下小于 O(n(k+∣Σ∣)),可以忽略不计。

若当k的长度很大时,使用排序算法具有更高的效率。

相关推荐
晴天下小雨o1 分钟前
排序算法总结
java·算法·排序算法
程序员爱钓鱼30 分钟前
循环语句:for、range -《Go语言实战指南》
java·数据结构·算法
LabVIEW开发1 小时前
LabVIEW中算法开发的系统化解决方案与优化
算法·labview
wen__xvn1 小时前
每日一题洛谷P8662 [蓝桥杯 2018 省 AB] 全球变暖c++
c++·职场和发展·蓝桥杯
chenyuhao20241 小时前
链表面试题7之相交链表
数据结构·算法·链表·面试·c#
Pluchon1 小时前
硅基计划2.0 学习总结 壹 Java初阶
java·开发语言·学习·算法
测试者家园2 小时前
安装Python和配置开发环境
开发语言·软件测试·人工智能·python·职场和发展·零基础·质量效能
仙人掌_lz2 小时前
理解多智能体深度确定性策略梯度MADDPG算法:基于python从零实现
python·算法·强化学习·策略梯度·rl
是代码侠呀2 小时前
从前端视角看网络协议的演进
leetcode·开源·github·github star·github 加星
C_Liu_3 小时前
C语言:深入理解指针(3)
c语言·数据结构·算法