原创 劍指offer之二叉樹的下一個結點

1.題目描述 給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。 2.問題分析 3.源代碼 // 例如: 1 // 2 3 //

原创 劍指offer之機器人的運動範圍

1.題目描述 地上有一個m行和n列的方格。一個機器人從座標0,0的格子開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數位之和大於k的格子。 例如,當k爲18時,機器人能夠進入方格(35,37),因爲

原创 劍指offer之序列化二叉樹

1.題目描述 請實現兩個函數,分別用來序列化和反序列化二叉樹。 兩個函數分別是: char* Serialize(TreeNode *root) { } TreeNode* Deserialize(char

原创 劍指offer之構建乘積數組

1.題目描述 給定一個數組A[0,1,…,n-1],請構建一個數組B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。 2.問題描述 假設: // 1 a

原创 劍指offer之刪除鏈表中重複的結點

1.題目描述 在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5 2.問題分析 方法一: 因爲重複的節點不保留

原创 劍指offer之表示數值的字符串

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

原创 劍指offer之和爲S的連續正數序列

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

原创 劍指offer之左旋轉字符串

1.題目描述 彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位後的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出循環左

原创 劍指offer之數組中只出現一次的數字

1.題目描述 一個整型數組裏除了兩個數字之外,其他的數字都出現了偶數次。請寫程序找出這兩個只出現一次的數字。 2.問題分析 方法一: 可以使用map,統計每個數出現的次數,之後對兩個出現一次的數進行賦值 方法二: 這裏就數字的特

原创 劍指offer之平衡二叉樹

1.題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 2.問題分析 什麼是平衡二叉樹?平衡二叉搜索樹(Self-balancing binary searchtree)又被稱爲AVL樹(有別於AVL算法),且具有以下性質:它

原创 劍指offer之二維數組中的查找

1. 問題描述 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 2.問題分析 方法一:

原创 C++之約瑟夫環

1.題目描述 0,1,2,3,…,n-1這n個數排成一個圈,從數字0開始,每次在圓圈裏面剔除第m個數字。求出這個圓圈最後一個數字。 2.方法 一個是使用鏈表來模擬這個過程 使用公式推導 3.代碼 鏈表模擬: int LastRem

原创 C++桶排序

1.桶排序思想: 桶排序(Bucket sort)或所謂的箱排序,是一個排序算法,工作的原理是將數組分到有限數量的桶裏。每個桶再個別排序(有可能再使用別的排序算法或是以遞歸方式繼續使用桶排序進行排序)。桶排序是鴿巢排序的一種歸納結果。

原创 C++計數排序

計數排序(Counting sort)是一種穩定的線性時間排序算法。 當輸入的元素是 n個min到max之間的整數時候,k = max - min +1,它的時間複雜度是O(n+k)。 計數排序不是比較排序,排序的速度快於任何比較排

原创 sizeof()大小總結

sizeof 運算符 查詢對象或類型的大小 在需要知道對象的實際大小時使用 語法: sizeof(類型) sizeof 表達式 解釋 返回 類型 的對象表示的字節數。 返回當 表達式 求值時所返回的類型的對象表示的字節數。 #