原创 LCOF劍指offer--面試題38. 字符串的排列

輸入一個字符串,打印出該字符串中字符的所有排列。 你可以以任意順序返回這個字符串數組,但裏面不能有重複元素。 示例: 輸入:s = "abc" 輸出:["abc","acb","bac","bca","cab","cba"] 限

原创 LCOF劍指offer--面試題36. 二叉搜索樹與雙向鏈表

輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的循環雙向鏈表。要求不能創建任何新的節點,只能調整樹中節點指針的指向。 爲了讓您更好地理解問題,以下面的二叉搜索樹爲例: 我們希望將這個二叉搜索樹轉化爲雙向循環鏈表。鏈表中的每個節

原创 LCOF劍指offer--面試題42. 連續子數組的最大和

輸入一個整型數組,數組裏有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。 要求時間複雜度爲O(n)。 示例1: 輸入: nums = [-2,1,-3,4,-1,2,1,-5,4] 輸出: 6

原创 LCOF劍指offer--面試題52. 兩個鏈表的第一個公共節點

輸入兩個鏈表,找出它們的第一個公共節點。 如下面的兩個鏈表: 在節點 c1 開始相交。 示例 1: 輸入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5]

原创 LCOF劍指offer--面試題57 - II. 和爲s的連續正數序列

輸入一個正整數 target ,輸出所有和爲 target 的連續正整數序列(至少含有兩個數)。 序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。 示例 1: 輸入:target = 9 輸出:[[2,3,4],[4,

原创 LCOF劍指offer--面試題57. 和爲s的兩個數字

輸入一個遞增排序的數組和一個數字s,在數組中查找兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。 示例 1: 輸入:nums = [2,7,11,15], target = 9 輸出:[2,7] 或者

原创 LCOF劍指offer--面試題58 - I. 翻轉單詞順序

輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。爲簡單起見,標點符號和普通字母一樣處理。例如輸入字符串"I am a student. “,則輸出"student. a am I”。 示例 1: 輸入: "the

原创 LCOF劍指offer--面試題53 - I. 在排序數組中查找數字 I

統計一個數字在排序數組中出現的次數。 示例 1: 輸入: nums = [5,7,7,8,8,10], target = 8 輸出: 2 示例 2: 輸入: nums = [5,7,7,8,8,10], target = 6 輸

原创 LCOF劍指offer--面試題46. 把數字翻譯成字符串

給定一個數字,我們按照如下規則把它翻譯爲字符串:0 翻譯成 “a” ,1 翻譯成 “b”,……,11 翻譯成 “l”,……,25 翻譯成 “z”。一個數字可能有多個翻譯。請編程實現一個函數,用來計算一個數字有多少種不同的翻譯方法。

原创 LCOF劍指offer--面試題34. 二叉樹中和爲某一值的路徑

輸入一棵二叉樹和一個整數,打印出二叉樹中節點值的和爲輸入整數的所有路徑。從樹的根節點開始往下一直到葉節點所經過的節點形成一條路徑。 示例: 給定如下二叉樹,以及目標和 sum = 22, 5 / \

原创 LCOF劍指offer--面試題64. 求1+2+…+n

求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 示例 1: 輸入: n = 3 輸出: 6 示例 2: 輸入: n = 9 輸出: 45

原创 LCOF劍指offer--面試題33. 二叉搜索樹的後序遍歷序列

輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷結果。如果是則返回 true,否則返回 false。假設輸入的數組的任意兩個數字都互不相同。 參考以下這顆二叉搜索樹: 5 / \ 2 6 /

原创 LCOF劍指offer--面試題31. 棧的壓入、彈出序列

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

原创 LCOF劍指offer--面試題40. 最小的k個數

輸入整數數組 arr ,找出其中最小的 k 個數。例如,輸入4、5、1、6、2、7、3、8這8個數字,則最小的4個數字是1、2、3、4。 示例 1: 輸入:arr = [3,2,1], k = 2 輸出:[1,2] 或者 [2,1

原创 LCOF劍指offer--面試題20. 表示數值的字符串

請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"0123"都表示數值,但"12e"、"1a3.14"、"1.2.3"、"+-5"、"-1E-16"