注:*越多,越重要
1. 待學習知識點page 28
資料結構:單次查詢樹(trie),
概念:單例設計模式,工廠設計模式
2. [*] 解決技術面試題5步法page 29
1)向面試官提問,以消除疑義
2)設計一種演算法
3)先寫偽**,務必告訴面試官接下來會寫 真實的 **
4)寫**,不緊不慢
5)測試寫好的**,仔細修正每一處錯誤
3.【***】 演算法題的5種解法page 31
1)舉例法
舉一些具體的例子 -》 發現一般規則
2)模式匹配法
與相似問題作模擬 -》 修改相關問題的解法以解決新問題
3)簡化推廣法
簡化問題,得到簡化版本 -》 推廣,調整為複雜版本
4)簡單構造法
先從基本情況來解決問題,n=1,n=2,n=3...... -》 其實是遞迴
5)資料結構頭腦風暴法
快速過一遍資料結構的列表,逐個嘗試各種資料結構
4. 【**】怎樣才算好**page 35
特性:正確,搞笑,簡潔,易讀,可維護
1)多用資料結構
2)適當重用**
3)模組化
將孤立的**塊劃分為相應的函式 -》 更易讀,可測試性強
4)靈活,健壯
盡量編寫**解決更普遍的問題
5)錯誤檢查
程式設計師面試金典
1.有個小孩正在上樓梯,樓梯有n階台階,小孩一次可以上1階 2階 3階。請實現乙個方法,計算小孩有多少種上樓的方式。為了防止溢位,請將結果mod 1000000007 給定乙個正整數intn,請返回乙個數,代表上樓的方式數。保證n小於等於100000。int countways int n retu...
程式設計師面試金典 2 2
return kth to last 返回單鏈表中倒數第k個元素。下面會分別使用遞迴和非遞迴的方法來解決這道題,一般來說遞迴的方法寫起來更容易,但是效率一般不是最好的,比如這道題遞迴解法的 量大約是非遞迴解法的一半,但是時間複雜度依然是o n 遞迴解法。這種方法的本質是先遍歷到鍊錶尾部,最後再返回的...
程式設計師面試金典 2 4
partition 編寫 將鍊錶中小於x的元素放在鍊錶的前半部分,大於x的元素放在鍊錶的後半部分,沒有順序要求。如果是陣列的話,根據x對陣列進行劃分的方法類似於快排。對於鍊錶會更簡單一些,可以直接將原始鍊錶拆分為兩個鍊錶,乙個中所有元素比x小,乙個中所有元素比x大,最後再進行連線。通過在鍊錶中使用b...