Algorithm
本周选择的算法题是:Group Anagrams
规则
Given an array of strings strs
, group the anagrams together. You can return the answer in any order.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Example 1:
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Example 2:
Input: strs = [""]
Output: [[""]]
Example 3:
Input: strs = ["a"]
Output: [["a"]]
Constraints:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i]
consists of lower-case English letters.
Solution
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
ans = {}
for word in strs:
key = "".join(sorted(word))
anagrams = ans.get(key, [])
anagrams.append(word)
ans[key] = anagrams
return list(ans.values())
Review
Why Is Apple’s M1 Chip So Fast?
科普性的文章,介绍了 M1 芯片的设计:
- M1 并不是 CPU,而是将“整个计算机”打包进了一个芯片中
- M1 引入了大量专用芯片,CPU、GPU、ISP、DSP、NPU、视频编解码、加解密、统一内存等
- M1 有非常大的重排序缓冲区,是 Intel、AMD 的3倍大小,意味着可以容纳3倍的指令
- M1 有8个解码器,在指令对齐的情况下可以更快的拆分指令以及填充到重排序缓冲区
Tip
学习并落地了一个 Chrome 插件。
Share
分享一篇关于 Chrome 插件的文章:为 GitHub 提供 Owner 维度的文件过滤。