原创 劍指offer 面試題55 二叉樹的深度&平衡二叉樹

二叉樹的深度: 使用遞歸,複雜度與樹的結點樹有關 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int

原创 劍指offer 面試題50 第一個只出現一次的字符

題目描述 在一個字符串(0<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫). 用一個大小爲52的數組記錄每個字母出現的次數,然後在用一遍遍歷,找出

原创 Leetcode 120. 三角形最小路徑和

題目描述: 給定一個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。 例如,給定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自頂向下的最小路徑和爲 11(即,2 + 3

原创 劍指offer 面試題12 矩陣中的路徑

請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。如果一條路徑經過了矩陣中的某一個格子,則該路徑不能再進入該格子。

原创 劍指offer 面試題8 二叉樹的下一個節點

題目描述 給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。 tips:1. 若該節點有右子樹,則下一個節點是改子樹的最左子節點 2. 若該節點無

原创 劍指offer 面試題35 複雜鏈表的複製

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

原创 Leetcode95. 不同的二叉搜索樹 II

給定一個整數 n,生成所有由 1 … n 爲節點所組成的二叉搜索樹。 示例: 輸入: 3 輸出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,

原创 劍指offer 面試題51 數組中的逆序對

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

原创 劍指offer 面試題28 對稱的二叉樹

題目描述 請實現一個函數,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其爲對稱的。 tips: 利用遞歸的思想,另需構造一個傳入兩棵樹的函數 ,來判斷傳入的兩棵樹是否對稱。 /* struct

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

題目描述 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。 tips: 使用遞歸,使用一個指針的引用,來記錄轉換爲鏈表後的最後一個元素 class Solution

原创 劍指offer 面試題14 剪繩子

題目描述 給你一根長度爲n的繩子,請把繩子剪成整數長的m段(m、n都是整數,n>1並且m>1),每段繩子的長度記爲k[0],k[1],…,k[m]。請問k[0]xk[1]x…xk[m]可能的最大乘積是多少?例如,當繩子的長度是8時

原创 劍指offer 面試題56 數組中只出現一次的數字

題目描述 一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 同leetcode260 tips: 先用一遍異或,找出1位爲1的位置,然後根據這一位將數組分爲兩部分,再分別進行異或 注意

原创 劍指offer 面試題25 合併兩個排序的鏈表

題目描述 輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。 類似於歸併排序的歸併過程,思路是每次在鏈表的尾部插入較小的元素。 也可以考慮用遞歸的方法寫,比較簡便。 #include <i

原创 劍指offer 面試題15 二進制中1的個數

題目描述: 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 可能首先會想到,每次把這個數進行除以2,或者進行右移操作,但是考慮到負數的情況,並不適用 可以藉助一個flag, 保持n不動,而每次左移flag(這個f

原创 劍指offer 面試題21 調整數組順序使奇數位於偶數前面

題目描述 輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 由於需要保持奇數之間和偶數之間的相對位置不變,每次