原创 牛客網_華爲機試_034_圖片整理(字符排序)

題目描述 Lily上課時使用字母數字圖片教小朋友們學習英語單詞,每次都需要把這些圖片按照大小(ASCII碼值從小到大)排列收好。請大家給Lily幫忙,通過C語言解決。   輸入描述: Lily使用的圖片包括"A"到"Z"

原创 劍指Offer_面試題08_旋轉數組的最小數字

思路: 如序列 3,4,5,1,2   觀察到數組旋轉後可以分爲兩個部分,兩個排序的子數組,而且前面的元素都不小於後面數組的元素。而且最小值元素剛好是這兩個數組的分界線。 在有序數組中可以使用二分查找法實現O(logn)的查找。本題的數

原创 劍指Offer_面試題10_二進制中1的個數

題目:輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 這一題與 牛客網_華爲機試_015_求int型正整數在內存中存儲時1的個數 (十進制轉二進制)基本一致,解法請參考。 主要注意的點在於千萬不要用模2取餘法來統計2的個

原创 劍指Offer_面試題11_數值的整數次方

題目:給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。不能用庫函數,同時不需要考慮大數問題。 分析:實現特定庫函數的功能是常見的一類面試題,要求我們熟練使用庫函數同時理解實現原

原创 劍指Offer_面試題12_打印1到最大的n位數

題目:輸入數字n,按順序打印出從1到最大的n位十進制數。比如輸入3,則打印1、2、3一直到最大的3位數即999。 陷阱:這個題目看似簡單,我們先求出最大的n位數,然後for循環從1開始打印。 void PrintToMax(int n)

原创 劍指Offer_面試題18_樹的子結構

題目描述 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) 分析:這裏說的子結構不是子樹,只是根據值來判斷,更像是“包含”關係吧。首先需要在A樹中找到和B根節點值一樣的結點,然後判斷A的子

原创 劍指Offer_面試題26_複雜鏈表的複製

題目描述 輸入一個複雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點),返回結果爲複製後複雜鏈表的head。(注意,輸出結果中請不要返回參數中的節點引用,否則判題程序會直接返回空) 分析:一

原创 劍指Offer_面試題15_鏈表中倒數第k個結點

題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。最後一個結點時倒數第一 分析:一般思路是先遍歷出鏈表長度,然後在移動指針到指定位置。如果面試官要求只遍歷一次,那麼就需要兩個指針,讓第一個指針先走k-1步,然後第二個指針開始從頭走,

原创 劍指Offer_面試題24_二叉搜索樹的後序遍歷序列

題目描述 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則返回true,否則返回false。假設輸入的數組的任意兩個數字都互不相同。 分析:二叉搜索樹即二叉排序樹,根節點左子樹小於根,右子樹大於根。以往和二叉樹

原创 劍指Offer_面試題20_順時針打印矩陣

題目描述 輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字,例如,如果輸入如下矩陣:  1   2   3   4  5   6   7   8 9  10  11 12  13 14 15 16  則依次打印出數字1,2

原创 劍指Offer_面試題19_二叉樹鏡像

題目描述 操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 輸入描述: 二叉樹的鏡像定義:源二叉樹 8 / \ 6 10 / \ / \ 5 7 9 11

原创 劍指Offer_面試題25_二叉樹中和爲某一值的路徑

題目描述 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 分析:不要被問題嚇到,感覺很複雜。找個例子來分析一下,找規律:        

原创 劍指Offer_面試題22_棧的壓入彈出序列

題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否爲該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5

原创 劍指Offer_面試題09_斐波那契數列

題目一:寫一個函數,輸入n,求斐波那契(Fibonacci)數列的第n項。 解析:一直以來很多C語言教科書在講遞歸函數的時候總會拿斐波那契數列作爲例子。但是這不意味這Fibonacci的最合適的解法就是用遞歸來實現。如果面試問道這題然後用

原创 劍指Offer_面試題21_包含min函數的棧

題目描述 定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數。在該棧中,調用min,push及pop的時間複雜度都是O(1)。 分析: 數組模擬棧可以做到O(1)push和pop,但是隻有一個數組的話min還是O(