《劍指Offer》題四十一~題五十
四十一、數據流中的中位數
題目:如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麽中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麽中位數就是所有數值排序之後中間兩個數的平均值。
四十二、連續子數組的最大和
題目:輸入一個整型數組,數組裏有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。要求時間復雜度為O(n)。
四十三、1~n整數中1出現的次數
題目:輸入一個整數n,求1~n這n個整數的十進制表示中1出現的次數。例如,輸入12,1~12這些整數中包含1的數字有1、10、11和12,1一共出現了5次。
四十四、數字序列中某一位的數字
題目:數字以0123456789101112131415…的格式序列化到一個字符序列中。在這個序列中,第5位(從0開始計數)是5,第13位是1,第19位是4,等等。請寫一個函數,求任意第n位對應的數字。
四十五、把數組排成最小的數
題目:輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的那個。例如,輸入數組{3, 32, 321},則打印出這3個數字能排成的最小數字321323。
四十六、把數字翻譯成字符串
題目:給定一個數字,我們按照如下規則把它翻譯為字符串:0翻譯成"a",1翻譯成"b",……,11翻譯成"l",……,25翻譯成"z"。一個數字可能有多個翻譯。例如,12258有5種不同的翻譯,分別是"bccfi"、"bwfi"、"bczi"、"mcfi"和"mzi"。請編程實現一個函數,用來計算一個數字有多少種不同的翻譯方法。
四十七、禮物的最大值
題目:在一個mxn的棋盤的每一格都放有一個禮物,每個禮物都有一定的價值(價值大於0)。你可以從棋盤的左上角開始拿格子裏的禮物,並每次向左或者向下移動一格,直到到達棋盤的右下角。給定一個棋盤及其上面的禮物,請計算你最多能拿到多少價值的禮物?
四十八、最長不含重復字符的子字符串
題目:請從字符串中找出一個最長的不包含重復字符的子字符串,計算該最長子字符串的長度。假設字符串中只包含‘a‘~‘z‘的字符。例如,在字符串"arabcacfr"中,最長的不含重復字符的子字符串是"acfr",長度為4。
四十九、醜數
題目:我們把只包含因子2、3和5的數稱作醜數。求按從小到大的順序的第1500個醜數。例如,6、8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當作第一個醜數。
五十、第一個只出現一次的字符
題目一:字符串中第一個只出現一次的字符。在字符串中找出第一個只出現一次的字符。如輸入"abaccdeff",則輸出‘b‘。
題目二:字符流中第一個只出現一次的字符。請實現一個函數,用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是‘g‘;當從該字符流中讀出前6個字符"google"時,第一個只出現一次的字符是‘l‘。
五十一、數組中的逆序對
題目:在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數。例如,在數組{7, 5, 6, 4}中,一共存在5個逆序對,分別是(7, 6)、(7, 5)、(7, 4)、(6, 4)和(5, 4)。
五十二、兩個鏈表的第一個公共節點
題目:輸入兩個鏈表,找出它們的第一個公共節點。
五十三、在排序數組中查找數字
五十四、二叉搜索樹的第K大節點
五十五、二叉樹的深度
五十六、數組中數字出現的次數
五十七、和為S的數字
五十八、翻轉字符串
五十九、隊列的最大值
六十、n個骰子的點數
六十一、撲克牌中的順子
六十二、圓圈中最後剩下的數字
六十三、股票的最大利潤
六十四、求1+2+…+n
六十五、不用加減乘除做加法
六十六、構建乘積數組
六十七、把字符串轉換成整數
六十八、樹中兩個節點的最低公共祖先
《劍指Offer》題四十一~題五十