原创 程序員面試題精選100題(06)-二元查找樹的後序遍歷結果[數據結構]

題目:輸入一個整數數組,判斷該數組是不是某二元查找樹的後序遍歷的結果。如果是返回true,否則返回false。 例如輸入5、7、6、9、11、10、8,由於這一整數序列是如下樹的後序遍歷結果:          8        / 

原创 程序員面試題精選100題(14)-圓圈中最後剩下的數字[算法]

題目:n個數字(0,1,…,n-1)形成一個圓圈,從數字0開始,每次從這個圓圈中刪除第m個數字(第一個爲當前數字本身,第二個爲當前數字的下一個數字)。當一個數字刪除後,從被刪除數字的下一個繼續刪除第m個數字。求出在這個圓圈中剩下的最後一

原创 程序員面試題精選100題(04)-二元樹中和爲某一值的所有路徑[數據結構]

題目:輸入一個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。打印出和與輸入整數相等的所有路徑。 例如輸入整數22和如下二元樹                                   

原创 程序員面試題精選100題(11)-求二元查找樹的鏡像[數據結構]

題目:輸入一顆二元查找樹,將該樹轉換爲它的鏡像,即在轉換後的二元查找樹中,左子樹的結點都大於右子樹的結點。用遞歸和循環兩種方法完成樹的鏡像轉換。 例如輸入:      8     /  \   6      10  /\       

原创 程序員面試題精選100題(10)-排序數組中和爲給定值的兩個數字[算法]

題目:輸入一個已經按升序排序過的數組和一個數字,在數組中查找兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是O(n)。如果有多對數字的和等於輸入的數字,輸出任意一對即可。 例如輸入數組1、2、4、7、11、15和數字15。由

原创 程序員面試題精選100題(16)-O(logn)求Fibonacci數列[算法]

題目:定義Fibonacci數列如下:         /  0                      n=0 f(n)=      1                      n=1         \  f(n-1)+f

原创 程序員面試題精選100題(01)-把二元查找樹轉變成排序的雙向鏈表[數據結構

轉自:http://zhedahht.blog.163.com/blog/static/254111742007127104759245/ 題目:輸入一棵二元查找樹,將該二元查找樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只

原创 程序員面試題精選100題(13)-第一個只出現一次的字符[算法]

題目:在一個字符串中找到第一個只出現一次的字符。如輸入abaccdeff,則輸出b。 分析:這道題是2006年google的一道筆試題。 看到這道題時,最直觀的想法是從頭開始掃描這個字符串中的每個字符。當訪問到某字符時拿這個字符和後面

原创 程序員面試題精選100題(08)-求1+2+...+n[C/C++/C#]

題目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字以及條件判斷語句(A?B:C)。 分析:這道題沒有多少實際意義,因爲在軟件開發中不會有這麼變態的限制。但這道題卻能有效地考查

原创 程序員面試題精選100題(05)-查找最小的k個元素[算法]

題目:輸入n個整數,輸出其中最小的k個。 例如輸入1,2,3,4,5,6,7和8這8個數字,則最小的4個數字爲1,2,3和4。 分析:這道題最簡單的思路莫過於把輸入的n個整數排序,這樣排在最前面的k個數就是最小的k個數。只是這種思路

原创 程序員面試題精選100題(12)-從上往下遍歷二元樹[數據結構]

題目:輸入一顆二元樹,從上往下按層打印樹的每個結點,同一層中按照從左往右的順序打印。 例如輸入       8     /  \    6    10   /\     /\  5  7   9  11 輸出8   6   10  

原创 程序員面試題精選100題(03)-子數組的最大和[算法]

題目:輸入一個整形數組,數組裏有正數也有負數。數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。求所有子數組的和的最大值。要求時間複雜度爲O(n)。 例如輸入的數組爲1, -2, 3, 10, -4, 7, 2, -5,

原创 程序員面試題精選100題(15)-含有指針成員的類的拷貝[C/C++/C#]

題目:下面是一個數組類的聲明與實現。請分析這個類有什麼問題,並針對存在的問題提出幾種解決方案。 template<typename T> class Array { public: Array(unsigned array

原创 數組、指針、數組指針、指針數組

一、類型 T 的指針和類型 T 的數組並非同種類型。     常常聽說 char c[] 和 char *c 是一樣的。    然而實際上並非如此。數組定義 char c[10] 請求預留 10 個字符的位置, 並用名稱 “c” 表示。也

原创 程序員面試題精選100題(32)-不能被繼承的類[C/C++/C#]

題目:用C++設計一個不能被繼承的類。 分析:這是Adobe公司2007年校園招聘的最新筆試題。這道題除了考察應聘者的C++基本功底外,還能考察反應能力,是一道很好的題目。 在Java中定義了關鍵字final,被final修飾的類不