Experience
- 命名style
- 單元測試和assert的使用
- anotation
- 括號匹配,標(biāo)點(diǎn)無遺漏
- c++注意輸入?yún)?shù)為引用
- 慢下來,特別邊界條件點(diǎn)(&& || < > = !=)
- 盡量一次整對
Array
- qsort
- binary search
- heap sort
- min(max) k element
- 在一個(gè)字符串中找到第一個(gè)只出現(xiàn)一次的字符。如輸入abaccdeff,則輸出b(char arr)
- 僅含0,1的數(shù)組排序
- 求和,再賦值O(2N)
- 快排(交換兩端的0和1)
- 調(diào)整數(shù)組長度,使基數(shù)位于偶數(shù)之前(同上)
- Joseph環(huán)
Bit
- ip parse
- 1 bit of integer
List
- merge list
- 鏈表是否有環(huán)
注意不一定從首位相連,有可能局部有環(huán)
兩個(gè)人在環(huán)形操場跑步,跑的快的總能追上跑的慢的
- 兩個(gè)鏈表是否相交(相交則尾節(jié)點(diǎn)一致),擴(kuò)展求相交的節(jié)點(diǎn)
- 鏈表長度
- 輸入一個(gè)單向鏈表,輸出該鏈表中倒數(shù)第k個(gè)結(jié)點(diǎn)
- record all(use vector)
- two pass
- Joseph環(huán)
- O(1)刪除單向鏈表節(jié)點(diǎn)(如何避免查找,直接刪除)
Stack
- min stack
- 給定入棧序列,判斷一個(gè)序列是否為出棧序列
String
- strcmp
- reverse(first reverse all, then reverse every word)
"I am a student." 則輸出"student. a am I";
- 在字符串中刪除特定的字符
Tree
- depth of a tree
- the max distance of a tree(expand problem of tree depth)
- 就地反轉(zhuǎn)二叉樹
- 按層次遍歷二叉樹,將同層的節(jié)點(diǎn)打印在同一行上。不同層的節(jié)點(diǎn)分行打印
- BiTree to BiLink
- sum path
輸入一個(gè)整數(shù)和一棵二元樹。
從樹的根結(jié)點(diǎn)開始往下訪問一直到葉結(jié)點(diǎn)所經(jīng)過的所有結(jié)點(diǎn)形成一條路徑。
打印出和與輸入整數(shù)相等的所有路徑。
例如輸入整數(shù)22 和如下二元樹
10
/ \
5 12
/ \
4 7
則打印出兩條路徑:10, 12 和10, 5, 7。
BT
- sum path
- 背包問題
- 1-N所有排列組合
DP
- sum array max sum
- 找零錢
- 背包問題
- 走樓梯問題
- 最長公共子序列
Hash
- two sum
- 在字符串中刪除特定的字符。