刷力扣热题–第四天:49:字母异位词分组
菜鸟第四天开始奋战敲代码,持之以恒,见证成长
1.题目简介
2.题目解答
这道题描述较少,初看有点晕,看示例的意思是,就是将整个数组内,包含相同字母但字母顺序不同的单词组为列表,并返回一个多维列表。一个一个遍历,如果前面的数组内包含就放入不包含,就单独创建,使用字典保存中间结果。
ok,过了,因为在函数内使用了sort,所以复杂度挺高的,再试一下:
改不出来,不恋战,下次继续,今天就这样。时间复杂度 O(Nklogk),空间复杂度O(N)
因为用的sort,复杂度为klogk,下次再想想,这个问题该如何避免。
3.心得体会
题目感觉还可以,一遍过,但复杂度太高了,得调一下,尽可能的降低。代码放下面了:
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
string_return = {}
for i, item in enumerate(strs):
key = "".join(sorted(item))
if key in string_return.keys():
string_return[key].append(i)
else:
list_value = [i]
string_return[key] = list_value
results = []
for k, v in string_return.items():
results.append([strs[i] for i in v])
return results
4.写作时长
7-5-23:00 == 7-5-23:44 四十四分钟,慢慢来~