原创 二叉排序樹轉變成排序的雙向鏈表

一、問題描述 輸入一棵二叉查找樹,將該二叉查找樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只調整指針的指向。 【舉例】      10     /   \   6     14  /  \     /  \ 4   8 12 1

原创 最長非連續/連續遞減子序列

一、題目描述 【題1】求一個數組的最長非連續遞減子序列 【題2】求一個數組的最長連續遞減子序列 二、解題思路 【題1】採用動態規劃的思想,設dp[i]爲以i爲終點元素的遞減子序列長度,則遞推公式爲: dp[i] = max(dp[j]+1

原创 字符串A中刪除字符串B中所有字符

一、問題描述 輸入兩個字符串,從第一字符串中刪除第二個字符串中所有的字符。 例如,輸入A串”They are students.”和B串”aeiou”,則刪除之後的第一個字符串變成”Thy r stdnts.” 二、問題分析 此題分爲兩個

原创 最長公共子串(連續)/子序列(不連續)

一、題目描述 1、【最長公共子串】 計算兩個字符串的最長公共子串的長度,字符不區分大小寫 假設 X 和 Y 的序列如下: X[1...m] = {a,s,d,f,a,s,r} Y[1...n] = {w,e,r,a,s,d,f,a,s,w

原创 65-滑動窗口

一、題目描述 給定一個數組和滑動窗口大小,請找出所有滑動窗口裏的最大值。 例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小爲3,那麼一共存在6個滑動窗口,它們的最大值分別爲{4,4,6,6,6,5} 二、解題思路 申請

原创 【二分查找】原型和變種以及相關思考

一、寫在前面的話 筆者在面一家非常NB的互聯網公司時,面到了二分查找的變種題,回來後對這個看似簡單的二分查找做了深入的思考,可能也不算深入,但至少比之前是更加領教了它的厲害。每一次面試都會帶來不一樣的思維啓迪,面完這家公司帶給我最大的啓迪

原创 39-判斷二叉樹是否爲平衡二叉樹【樹的深度&後序遍歷】

一、問題描述 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。 二、解題思路 思路一:先遞歸求各結點的深度,根據深度做差值,根據差值判斷是否爲平衡二叉樹 思路

原创 字典序排序

一、題目描述 給1000個人名字符串,如:raina tina anne....將這些人名按字典順序排序 二、解題思路 字典順序就是按a b c d順序,對字符串排列,可以直接用strcmp實現 三、解題算法 /************

原创 40-找數組中只出現奇數次的n個數字(n=1,2)

一、題目描述 題目一:一個整型數組裏除了1個數字之外,其他的數字都出現了偶數次,找出這個數字,要求時間複雜度O(n),空間複雜度O(1) 題目二:一個整型數組裏除了2個數字之外,其他的數字都出現了偶數次,找出這兩個數字,要求時間複雜度O(

原创 41-找和爲sum的連續正數序列

一、題目描述 輸入一個正數sum,打印出所有和爲sum的連續正數序列(至少含有兩個數),例如輸入15,由於1+2+3+4+5=4+5+6=7+8,所以結果打印出三個連續序列1~5、4~6和7~8 二、解題思路 該題的特殊點在於,找的是一個

原创 字典序的應用

一、題目描述 輸入n,m,k,表示n個“a”字符,m個“z”字符組成一個字符串,要求出字典序從低到高組成的第k個字符串是什麼? 【舉例】 n = 2,m = 2,k = 6 則該字符串構成的字典序排列爲: aazz azaz azza z

原创 36-歸併排序找逆序對

一、問題描述 在數組中的兩個數字如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數 二、解題思路 使用歸併排序實現逆序對的求解 三、解題算法 /********************

原创 35-求字符串中第一個只出現一次的字符

一、問題描述 在字符串中找出第一個只出現一次的字符。如輸入“abaccdeff”,則輸出'b' 二、解題思路 構建一個哈希表,其中鍵用來存這個字符信息,值用來記錄該值出現的次數 需要遍歷兩次這個字符串 第一次遍歷:構建哈希表  ---O(

原创 50-求樹中兩個結點的最低公共祖先(擴展)

一、題目描述 【題型一】輸入一個樹的兩個結點,限定該樹爲二叉搜索樹,求這兩個結點的最低公共祖先(最低父親結點) 【題型二】輸入一個樹的兩個結點,該樹爲普通樹,求這兩個結點的最低公共祖先(最低父親結點),ps:樹中每個節點有parent(三

原创 64-字符串中有效數值的判定-含科學計數數

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