演算法訓練營(六)雜湊表 對映 集合的實現與特性

2021-10-20 18:43:00 字數 1989 閱讀 1809

目錄

精、面試解題思路

一、hash table

1. 有效的字母異位詞

方法一方法二

2. 字母異位詞分組

雜湊表(hash table) ,也叫雜湊表,是根據關鍵碼值(key value)而直接進行訪問的資料結構。

它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫作雜湊函式(hash function) ,存放記錄的陣列叫作雜湊表(或雜湊表)。

給定兩個字串 s 和 t ,編寫乙個函式來判斷 t 是否是 s 的字母異位詞。

示例 1:

輸入: s = "anagram", t = "nagaram"

輸出: true

示例 2:

輸入: 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 質數這個知識點有很多考法,今年第二次訓練營就有考到 算數基本定理,又稱唯一分解...