目錄
精、面試解題思路
一、hash table
1. 有效的字母異位詞
方法一方法二
2. 字母異位詞分組
雜湊表(hash table) ,也叫雜湊表,是根據關鍵碼值(key value)而直接進行訪問的資料結構。
它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫作雜湊函式(hash function) ,存放記錄的陣列叫作雜湊表(或雜湊表)。
給定兩個字串 s 和 t ,編寫乙個函式來判斷 t 是否是 s 的字母異位詞。
示例 1:
輸入: s = "anagram", t = "nagaram"示例 2:輸出: true
輸入: s = "rat", t = "car"說明:輸出: false
高階:思路
根據與面試官溝通的思路:使用sort方法對兩個字串進行排序。之後對比兩個字串是否相等。(有點投機取巧)
class solution
};
使用hash table,分別計算字串中每個字元出現的次數。最後比較兩個hash table
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。
示例:
輸入: ["eat", "tea", "tan", "ate", "nat", "bat"]說明:輸出:[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
思路:
雜湊表以內部進行排序的各個單詞為key,以字串向量(vector)為value,儲存各個字元數量相同的字串(anagram)。
答案
class solution
//將字串存入對應vector中
演算法訓練營 滑動視窗的解釋與構造
簡介 在演算法的問題中,如果構造的儲存抽象為陣列,那麼有時會遇到一類問題 最大長度 最小長度 的字串。固定的滑動視窗,可以認為值乙個訊號量的區域性取樣 演算法問題中,考慮的層次更為廣泛 有乙個大小可變的視窗,左右兩端方向一致向前滑動。假設有陣列 a b c d e f g h 乙個大小為3的滑動視窗...
vue訓練營4 vue中的diff演算法
原始碼分析1 diff的必要性,src core instance lifecycle.jslifecycle.js mountcomponent 元件中可能存在很多個 data 中的key使用 原始碼分析2 diff的執行方式,src core vdom patch.js patchvnode p...
牛客演算法基礎訓練營2 質數的不同考法
歌德說 了解自己最好的方式,不是沉思,而是行為。質數這個東西就是,你知道他是什麼,但是每次換個考法你就不會了。首先,日常判斷質數的 最初耗時最長 bool isprime int x bool isprime int x 質數這個知識點有很多考法,今年第二次訓練營就有考到 算數基本定理,又稱唯一分解...