百度2012實習軟體研發工程師(C/C++開發)筆試題

來源:果殼範文吧 8.61K

找兄弟單詞,例如mary和army是兄弟單詞,即所含字母是一樣的,只是字母順序不同,給出一個單詞,要求在一個字典中找出該單詞的所有兄弟單詞,給出實現方案。我的解答:

百度2012實習軟體研發工程師(C/C++開發)筆試題

把各個單詞a的各個字母按照字母表順序排序,排序後的新單詞是b,然後根據b構建一棵二叉平衡樹,節點值為b,各個節點儲存一個數組 ,就是b對應的所有a,這樣很容易找到所有的兄弟單詞

2. 關於兩個連結串列是否含有相同節點的,題目說什麼網路爬蟲,從一個頁面開始爬,將爬到的url存到一個連結串列裡,假設每個頁面至多含有一個link(重點資訊),現在從兩個不同頁面開始爬,將得到的url放到連結串列就得到了兩個連結串列,要求判斷兩個連結串列是否含有相同的url,假設每個連結串列的'包含的url有上百億個,不能用hash,給出演算法。

我的解答:

上百億個url應該是存在檔案裡面的,不會全部放到記憶體中。所以建立一棵B樹來儲存第一個鏈,對應的url儲存在檔案中。然後依次把第二個鏈各個url在B樹做查詢工作即可

3. 關於百度suggestion的

給出實現這個功能主要的資料結構和演算法,以及優化的方法,提高時間和空間的效率。

我的解答:

採用堆排序演算法

每個對應十個節點


熱門標籤