原创 輸入一顆二元樹,從上往下按層打印樹的每個結點,同一層中按照從左往右的順序打印(16)
第16題: 題目(微軟): 輸入一顆二元樹,從上往下按層打印樹的每個結點,同一層中按照從左往右的順序打印。 例如輸入 8 / \ 6 10 / \ / \ 5 7 9 11 輸出8 6 10 5 7 9 11。 #in
原创 翻轉句子中單詞的順序(10)
第10題 翻轉句子中單詞的順序。 題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。 句子中單詞以空格符隔開。爲簡單起見,標點符號和普通字母一樣處理。 例如輸入“I am a student.”,則輸出“student
原创 兩個大整數相加—高精度加法
這是一個經典的上機題目,要求輸入兩個數字字符串,實現任何長度的加法,供上機筆試的同學參考 /* Name: Copyright: Author: Date: Description: 高精度加法 */ #
原创 把二元查找樹轉變成排序的雙向鏈表
//今天是世界知識產權日,在這一天發表第一篇文章,希望轉載我博客的同學 註明出處; //3.求子數組的最大和 //題目: //輸入一個整形數組,數組裏有正數也有負數。 //數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。
原创 輸入一個已經按升序排序過的數組和一個數字(14)
第14題: 題目:輸入一個已經按升序排序過的數組和一個數字, 在數組中查找兩個數,使得它們的和正好是輸入的那個數字。 要求時間複雜度是O(n)。如果有多對數字的和等於輸入的數字,輸出任意一對即可。 例如輸入數組1、2、4、7、11、15和
原创 求子數組的最大和(3)
題目: 輸入一個整形數組,數組裏有正數也有負數。 數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。 求所有子數組的和的最大值。要求時間複雜度爲O(n)。 例如輸入的數組爲1, -2, 3, 10, -4, 7, 2, -5
原创 n個數字(0,1,…,n-1)形成一個圓圈,從數字0開始(18)
第18題: 題目:n個數字(0,1,…,n-1)形成一個圓圈,從數字0開始, 每次從這個圓圈中刪除第m個數字(第一個爲當前數字本身,第二個爲當前數字的下一個數字)。 當一個數字刪除後,從被刪除數字的下一個繼續刪除第m個數字。 求出在這個圓
原创 判斷整數序列是不是二元查找樹的後序遍歷結果(9)
第9題 判斷整數序列是不是二元查找樹的後序遍歷結果 題目:輸入一個整數數組,判斷該數組是不是某二元查找樹的後序遍歷的結果。 如果是返回true,否則
原创 求1+2+…+n(12)
題目:求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等關鍵字以及條件判斷語句(A?B:C)。 /* Name: Copyright: Author: Date
原创 和爲n連續正數序列
//51.和爲n連續正數序列。 //題目:輸入一個正數n,輸出所有和爲n連續正數序列。 //例如輸入15,由於1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-5、4-6和7-8。 //分析:這是網易的一道面試題。
原创 把二元查找樹轉變成排序的雙向鏈表
題目:輸入一棵二元查找樹,將該二元查找樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只調整指針的指向。 10 / \ 6 14 / \ / \4 8 12 16 轉換成雙向鏈表4=6=8=10=12=14=16。 首
原创 設計包含min函數的棧(2)
定義棧的數據結構,要求添加一個min函數,能夠得到棧的最小元素。 要求函數min、push以及pop的時間複雜度都是O(1)。 #include<iostream> #include<iomanip> using namespace
原创 在二元樹中找出和爲某一值的所有路徑(4)
題目:輸入一個整數和一棵二元樹。 從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。 打印出和與輸入整數相等的所有路徑。 例如 輸入整數22和如下二元樹 10 / \ 5 12 / \
原创 輸入一顆二元查找樹,將該樹轉換爲它的鏡像(15)
第15題: 題目:輸入一顆二元查找樹,將該樹轉換爲它的鏡像, 即在轉換後的二元查找樹中,左子樹的結點都大於右子樹的結點。 用遞歸和循環兩種方法完成樹的鏡像轉換。 例如輸入: 8 / \ 6 10 /\ /\ 5 7 9
原创 在一個字符串中找到第一個只出現一次的字符(17)
第17題: 題目:在一個字符串中找到第一個只出現一次的字符。如輸入abaccdeff,則輸出b。 分析:這道題是2006年google的一道筆試題。 /* Name: Copyright: Author: D