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

相关推荐
冻柠檬飞冰走茶几秒前
PTA基础编程题目集 7-13 日K蜡烛图(C语言实现)
c语言·开发语言·数据结构·算法
Databend8 分钟前
从全表排序到概率统计:Databend 如何用 KLL、Top-N 与 CMS 改进基数估计
大数据·数据库·算法
imuliuliang15 分钟前
分治法在大数据计算中的并行化应用探索7
算法
Lsir10110_27 分钟前
【力扣hot100】矩阵题通关复盘
算法·leetcode·矩阵
退休倒计时28 分钟前
【每日一题】LeetCode 207. 课程表 TypeScript
算法·leetcode·typescript
稚南城才子,乌衣巷风流1 小时前
树的重心:概念、性质与算法详解
算法·深度优先·图论
不会就选b1 小时前
算法日常・每日刷题--<哈希>1
算法·哈希算法
zander2581 小时前
LeetCode 207. 课程表
算法·深度优先
萌动的小火苗1 小时前
深度学习中的损失函数与优化算法基础知识
人工智能·深度学习·算法
happyprince1 小时前
02_OpenCodeReview 具体观:八种算法机制与背后的论文谱系
算法