以我面試多次大廠的經驗,無論是筆試還是面試,大廠的算法題目都不會考非常難實現的數據結構或者算法模板,通常喜歡的還是偏思維的 hash, 複雜度,dp,這樣一些簡單算法
題目鏈接
google kickstart 2018 Scrambled Words
分析
分析在題目網站有,首先需要想到的就是不同串的長度只有 種,那麼枚舉所有長度肯定是一種可行的方法,不過呢,即使枚舉長度,對於每個枚舉到的字串,我們仍然需要將他和所有具有此長度的串比較,太過浪費時間了,怎麼做才能加速呢? 對 hash, 將dict中的串 hash 一下,那麼查找時間就變成了, 所以最終的時間複雜度就變成了
這裏補充一些 hash 知識,其實這個在工業界用的非常多,所以基本上的程序語言都提供了豐富的類庫,我用的是c++ 的unordered_map<>,當然,對於 個性化 的類還是需要自己寫hash 函數以及 ==的,詳見參考文獻
code
參考文獻
版權聲明
本作品爲作者原創文章,採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議
作者: taotao
轉載請保留此版權聲明,並註明出處