原创 連續子數組的最大和

題目 HZ偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全爲正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,

原创 二叉搜索樹與雙向鏈表

題目 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。 思路 中序非遞歸遍歷二叉搜索樹,每次記錄當前遍歷出來的節點的pre節點,把上個節點的right指針指向它,當

原创 字符串的排列

題目 輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba,注意可能有字符重複。 思路 對當前字符串進行全排列

原创 整數中1出現的次數(從1到n整數中1出現的次數)

題目 求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?爲此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他,並把問題

原创 數字在排序數組中出現的次數

題目 統計一個數字在排序數組中出現的次數。 思路 利用lower_bound和upper_bound找出下界和上界,然後減一下即可。 也可以自己模擬lower_bound和upper_bound。 參考代碼 class Solu

原创 和爲S的連續正數序列

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

原创 最小的K個數

題目 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 思路 掃描數組,並使用multiset來存儲掃描的元素(從大到小存儲),如果multiset的長度達

原创 反轉單詞順序列

題目 牛客最近來了一個新員工Fish,每天早晨總是會拿着一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“student. a am I”。後來才意識到,

原创 數組中只出現一次的數字

題目 一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 思路 先考慮如果只有一個只出現一次的數字的情況,這個很簡單,只需要把所有的數字異或一遍,所有出現了兩次的數字都會異或抵消掉,剩下的

原创 醜數

題目 把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因爲它包含因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 思路 對於任意的第n個醜數,它必定是前面的醜

原创 左旋轉字符串

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

原创 二叉樹的深度

題目 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度爲樹的深度。 思路 前序遍歷二叉樹,記錄一下深度。 參考代碼 /* struct TreeNode { in

原创 和爲S的兩個數字

題目 輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出:對應每個測試案例,輸出兩個數,小的先輸出。 思路 設置頭尾指針,每次把兩個指針指向的元

原创 平衡二叉樹

題目 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 思路 遞歸判斷左子樹有和又子樹的高度,絕對值不超過1. 參考代碼 class Solution { public: bool IsBalanced_Solution(T

原创 字符流中第一個不重複的字符

題目 請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符”go”時,第一個只出現一次的字符是”g”。當從該字符流中讀出前六個字符“google”時,第一個只出現一次的字符是”l”。如果當前字符流沒有存