CodingTour
ARTS #81

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 维度的文件过滤