一、鏈表系列
1、單鏈表基礎
2、單鏈表排序、反轉
3、找出單鏈表的倒數第k個元素
4、找出單鏈表的中間元素
5、給定單鏈表,檢測是否有環
6、有兩個有序鏈表,各自內部是有序的,但是兩個鏈表之間是無序的,合並兩個鏈表。
7、*給定兩個非環單鏈表(first, second),檢測兩個鏈表是否有交點,如果有返回第一個交點。
8、n個數字(0,1,…,n-1)形成一個圓圈,從數字0開始,
每次從這個圓圈中刪除第m個數字(第一個為當前數字本身,第二個為當前數字的下一個數字)。
當一個數字刪除後,從被刪除數字的下一個繼續刪除第m個數字。
求出在這個圓圈中剩下的最後一個數字。
二、棧和隊列系列
1、*棧的順序棧、鏈棧實現
2、*隊列的順序表、鏈表實現
三、數組系列
1、*輸入一個已經按升序排序過的數組和一個數字,
在數組中查找兩個數,使得它們的和正好是輸入的那個數字。
要求時間復雜度是O(n)。如果有多對數字的和等於輸入的數字,輸出任意一對即可。
例如輸入數組1、2、4、7、11、15和數字15。由於4+11=15,因此輸出4和11。
2、假設你有一個用1001個整數組成的數組,這些整數是任意排列的,
但是你知道所有的整數都在1到1000(包括1000)之間。
此外,除一個數字出現兩次外,其他所有數字只出現一次。
假設你只能對這個數組做一次處理,用一種算法找出重復的那個數字。
如果你在運算中使用了輔助的存儲方式,那麼你能找到不用這種方式的算法嗎?
四、字符串系列
1、輸入一個表示整數的字符串,把該字符串轉換成整數並輸出。
例如輸入字符串"345",則輸出整數345。
五、排序系列
1、直接插入排序
2、希爾排序
3、冒泡排序
4、快速排序
5、直接選擇排序
6、堆排序
六、內存管理
1、malloc和free用法
2、realloc用法
七、常見面試題
1、如果每次可以往上爬1個或2個或3個台階,不能往下走,從第0個台階開始,爬到第n個台階有多少種方案?
2、如果每次可以往上爬1個或2個或3個台階,爬樓梯過程中允許最多往下走一次,每次走1個台階,從第0個台階開始,爬到第n個台階有多少種方案?
3、如果每次可以往上爬1個或2個或3個台階,爬樓梯過程中允許最多往下走k次,每次走1個台階,從第0個台階開始,爬到第n個台階有多少種方案?
4、*C實現大整數四則運算
5、求1+2+…+n,
要求不能使用乘除法、for、while、if、else、switch、case等關鍵字以及條件判斷語句(A?B:C)。
八、邏輯推理系列
1、村子裡有50個人,每人有一條狗,在這50條狗中有病狗(這種病不傳染),於是人們要找出病狗。
2、上排給出十個數,在其下排填出對應的十個數
要求下排每個數都是先前上排那十個數在下排出現的次數。
上排的十個數如下:
[0,1,2,3,4,5,6,7,8,9]
3、有兩個房間,一間房裡有三盞燈,另一間房有控制著三盞燈的三個開關,
這兩個房間是分割開的,從一間裡不能看到另一間的情況。
現在要求受訓者分別進這兩房間一次,然後判斷出這三盞燈分別是由哪個開關控制的。
有什麼辦法呢?
4、你讓一些人為你工作了七天,你要用一根金條作為報酬。金條被分成七小塊,每天給出一塊。
如果你只能將金條切割兩次,你怎樣分給這些工人?
5、有4張紅色的牌和4張藍色的牌,主持人先拿任意兩張,再分別在A、B、C三人額頭上貼任意兩張牌,
A、B、C三人都可看見其余兩人額頭上的牌,看完後讓他們猜自己額頭上是什麼顏色牌,
A說不知道,B說不知道,C說不知道,然後A說知道了。
請教如何推理,A是怎麼知道的?
九、基礎題
1、*C語言基礎一
2、*C語言基礎二