【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的长度很大时,使用排序算法具有更高的效率。

相关推荐
饼饼学习空间智能15 小时前
家庭服务机器人训练数据怎么积累?仿真、真实采集与持续学习的技术路线分析
人工智能·算法·机器学习
蛋先生DX16 小时前
你瘦不下来但大模型可以:量化原理了解一下
深度学习·算法·llm
Scabbards_17 小时前
面试Leetcode - Heap 堆
java·leetcode·面试
牛阿大18 小时前
LQR算法
算法
(╹◡╹)18 小时前
18.剪枝
算法·机器学习·剪枝
Fa_Mian_Tuan19 小时前
图论基础|邻接矩阵超详细讲解(含无向/有向/带权图+完整可运行C语言代码)
c语言·数据结构·笔记·算法·图论
hanhahai19 小时前
指针与函数(函数指针与指针函数)
算法
ValhallaCoder20 小时前
Leetcode-hot100(2026.08.17)
python·算法·leetcode
泡沫冰@20 小时前
GO 语言基础
开发语言·算法·golang