【LeetCode】哈希表、字典、集合 實戰題目 242 49 1

242 有效的字母異位詞(亞馬遜、Facebook、谷歌在半年內面試中考過)
注意切題四件套:

  1. clarification 和麪試官搞清楚題目的要求,即題面是什麼,比如在本題中需要搞清楚,
  • 什麼是異位詞:異位詞是字母出現的次數一樣,但是出現順序不一樣的詞
  • 在本題中是否區分大小寫?
  1. possible solutions—>optimal(time & space)
  2. code
  3. test cases
    這裏一定要記得和麪試官要幾個測試樣例,證明你做事是有始有終的

本題的方法有:

  1. 暴力法:先 sort 一下排個序再比較,時間複雜度是 O(nlogn)
  2. 哈希表的方法:map 來統計每個字符出現的頻次,如果相同證明是異位詞
# 方法1;暴力法
class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        return sorted(s) == sorted(t)
# 方法2:hashtable 的方法
class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        return collections. Counter(s) == collections.Counter(t)

49 字母異位詞分組(亞馬遜在半年內面試中常考)

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        dic = {}
        for item in strs:
            key = tuple(sorted(item))
            dic[key] = dic.get(key,[]) + [item]
        return list(dic.values())

1 兩數之和(亞馬遜、字節跳動、谷歌、Facebook、蘋果、微軟、騰訊在半年內面試中常考)

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dic = {}
        for i,num in enumerate(nums):
            if num in dic:
                return [dic[num],i]
            dic[target - num] = i 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章