原创 【劍指offer-解題系列(25)】複雜鏈表的複製

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

原创 【劍指offer-解題系列(26)】二叉搜索樹與雙向鏈

題目描述 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。 分析 從根節點開始調整,把最左最右節點的值返回,使用引用作爲傳遞 代碼實現     TreeNode

原创 【劍指offer-解題系列(38)】數字在排序數組中出現的次數

題目描述 統計一個數字在排序數組中出現的次數。 分析 實現二分查找的upper函數和lower函數 代碼實現     int GetNumberOfK(vector<int> data ,int k) {         if

原创 【劍指offer-解題系列(32)】整數區間中出現1的個數

題目描述 求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?爲此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他,並把問題

原创 【劍指offer-解題系列(36)】 數組中的逆序對

題目描述 在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007 輸入描述: 題目保

原创 【劍指offer-解題系列(33)】把數組排成最小的數

 題目描述 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。 分析 主要思想是實現一個比較函數cmp,然後

原创 【劍指offer-解題系列(45)】翻轉單詞順序列

題目描述 牛客最近來了一個新員工Fish,每天早晨總是會拿着一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“student. a am I”。後來才意識到

原创 【劍指offer-解題系列(30)】最小的K個數

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 分析 要找出前k個最大數,簡單的方法就是快排,然後把前k個輸出。 另外就是堆排序,最小堆直接把

原创 【劍指offer-解題系列(27)】字符串的排列

題目描述 輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。  分析 遞歸方式打印,例如abc,那就打印a

原创 【劍指offer-解題系列(40)】數組中只出現一次的數字

題目描述 一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 分析 如果找一個數字的話,採用全部亦或的方法就能找出。 而如果有兩個數字不一樣,那麼採用一次全部亦或方法就會得到兩個數字亦或的結果

原创 【劍指offer-解題系列(43)】和爲S的兩個數

題目描述 輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出。 分析 遍歷數組查找一個數,然後

原创 【劍指offer-解題系列(35)】第一個只出現一次的字符

 題目描述 在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置 分析 採用類似直方圖統計的方法: 一個數組統計字符出現的頻率次數,另一個數組記錄第一次出現的位置 兩個數組大小都

原创 【劍指offer-解題系列(41)】和爲S的連續正數序列

 題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和爲100(至少包括兩個數)。沒多久,他就得到另一組連續正數和爲100的

原创 【劍指offer-解題系列(29)】數組中出現次數超過一半的數

題目描述 數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入一個長度爲9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2。如果不存在則輸出0。 分析 採

原创 【劍指offer-解題系列(39)】二叉樹的深度

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度爲樹的深度。 分析 遞歸方法可以方便實現深度查找 代碼實現     int TreeDepth(TreeNod