kickstart 2018 :Scrambled Words(hash+complexity)

以我面試多次大廠的經驗,無論是筆試還是面試,大廠的算法題目都不會考非常難實現的數據結構或者算法模板,通常喜歡的還是偏思維的 hash, 複雜度,dp,這樣一些簡單算法

題目鏈接

google kickstart 2018 Scrambled Words

分析

分析在題目網站有,首先需要想到的就是不同串的長度只有 O(wordsi)O(\sqrt{\sum words_i}) 種,那麼枚舉所有長度肯定是一種可行的方法,不過呢,即使枚舉長度,對於每個枚舉到的字串,我們仍然需要將他和所有具有此長度的串比較,太過浪費時間了,怎麼做才能加速呢? 對 hash, 將dict中的串 hash 一下,那麼查找時間就變成了O(1)O(1), 所以最終的時間複雜度就變成了 O(1)O(1)

這裏補充一些 hash 知識,其實這個在工業界用的非常多,所以基本上的程序語言都提供了豐富的類庫,我用的是c++ 的unordered_map<>,當然,對於 個性化 的類還是需要自己寫hash 函數以及 ==的,詳見參考文獻

code

github

參考文獻

版權聲明

本作品爲作者原創文章,採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議

作者: taotao

轉載請保留此版權聲明,並註明出處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章