1. 程式人生 > >百度2014筆試演算法題彙總

百度2014筆試演算法題彙總


1.使用C/C++編寫函式,實現字串反轉,要求不使用任何系統函式,且時間複雜度最小,函式原型:char* reverse_str(char* str)。

2.給定一個如下格式的字串(1,(2,3),(4,(5,6),7))括號內的元素可以是數字,也可以是另一個括號,請實現一個演算法消除巢狀的括號,比如把上面的表示式變成:(1,2,3,4,5,6,7),如果表示式有誤請報錯。

3.分別實現二叉查詢數root中兩個節點的最近相連的雙親節點:遞迴,非遞迴函式。

4.給出任意一個正整數,算出大於它的最小不重複數(即不存在相鄰兩個數相同的情況)

參考答案:

整型陣列處理演算法(九)給定任意一個正整數,求比這個數大且最小的“不重複數”(效能優化)[2014百度筆試題]



5.給出一個長度為N的字串,求裡面最長的迴文子串長度。

6.一幢大樓的底層有1001根電線,這些電線一直延伸到大樓樓頂,你需要確定底層的1001個線頭和樓頂的1001次線頭的對應關係。你有一個電池,一個燈泡,和許多很短的電線,你需要上下樓幾次才能確定電線接頭的對應關係.

解答:

註明:這裡每次上下樓都帶著電池和燈泡,以及每次介面連線,對應介面的之前連線過的線都將拆除,所以下面不再說明。

首先將底層一對介面(這裡假設為(buttom1,buttom2))連線起來,然後上樓,根據提供的電池和燈泡的亮滅,確定頂層的一對(這裡假設為(top1,top2)),接著將頂層的另一對連線起來(假設為(top3,top4)),然後下底層,確定和(top3,top4)對應的一對(假設為(buttom3,buttom4)),然後將底層的 buttom1和buttom3連線,底層的buttom2和buttom4連線,上樓,分別將確定過的兩對交換對接,即依次測試(top1,top4),(top2,top3)或者(top1,top3),(top2,top4),直接燈泡亮為止即可確定這四個介面的對接關係。這樣第一次確定4個介面需要上下樓3次。

然後根據第一次確定的4個介面,在頂層分別和剩餘的介面中的其中四個介面連線,下到底層,和第一次確定四個介面一樣,即可確定8個介面。這時確定8根只需要在上面的基礎上加1次就可以。接下來就可以確定16個介面,並以此指數增加,從而到2的10次方,即1024,即可全部確定1001個介面,而從2的3次方到2的10次方,共8次.

最後得出第一次確定的3次加上接下來的8次,共需11次即可確定他們的對應關係。


轉載請註明原創連結:http://blog.csdn.net/wujunokay/article/details/12209055