原创 程序員面試題精選100題(25)-在從1到n的正數中1出現的次數[算法]

題目:輸入一個整數n,求從1到n這n個整數的十進制表示中1出現的次數。 例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。 分析:這是一道廣爲流傳的google面試題。用最直觀的方法求解並不是

原创 程序員面試題精選100題(30)-賦值運算符重載函數[C/C++/C#]

問題:給出如下CMyString的聲明,要求爲該類型添加賦值運算符函數。 class CMyString { public: CMyString(char* pData = NULL); CMyString(const

原创 程序員面試題精選100題(31)-從尾到頭輸出鏈表[數據結構]

題目:輸入一個鏈表的頭結點,從尾到頭反過來輸出每個結點的值。鏈表結點定義如下: struct ListNode {       int       m_nKey;       ListNode* m_pNext; }; 分析

原创 程序員面試題精選100題(29)-調整數組順序使奇數位於偶數前面[算法]

題目:輸入一個整數數組,調整數組中數字的順序,使得所有奇數位於數組的前半部分,所有偶數位於數組的後半部分。要求時間複雜度爲O(n)。 分析:如果不考慮時間複雜度,最簡單的思路應該是從頭掃描這個數組,每碰到一個偶數時,拿出這個數字,並把

原创 malloc失敗的一個原因

         最近幫同學調一段程序,調試發現,程序其中的一個malloc函數返回值爲空,我們知道如果申請分配的內存空間太大,系統無法獲得符合要求的內存塊,malloc函數會返回NULL,而這個程序中申請的空間是很小的,系統內存也很充裕

原创 程序員面試題精選100題(20)-最長公共子串[算法]

題目:如果字符串一的所有字符按其在字符串中的順序出現在另外一個字符串二中,則字符串一稱之爲字符串二的子串。注意,並不要求子串(字符串一)的字符必須連續出現在字符串二中。請編寫一個函數,輸入兩個字符串,求它們的最長公共子串,並打印出最長公共

原创 程序員面試題精選100題(24)-棧的push、pop序列[數據結構]

題目:輸入兩個整數序列。其中一個序列表示棧的push順序,判斷另一個序列有沒有可能是對應的pop順序。爲了簡單起見,我們假設push序列的任意兩個整數都是不相等的。 比如輸入的push序列是1、2、3、4、5,那麼4、5、3、2、1就有

原创 程序員面試題精選100題(22)-整數二進制表示中1的個數[算法]

題目:輸入一個整數,求該整數的二進制表達中有多少個1。例如輸入10,由於其二進制表示爲1010,有兩個1,因此輸出2。 分析:這是一道很基本的考查位運算的面試題。包括微軟在內的很多公司都曾採用過這道題。 一個很基本的想法是,我們先判

原创 lua學習之coroutine

本文介紹了lua中的coroutine(協同程序),首先是協同程序的基本概念和常用的函數,然後展示了一個通過coroutine來解決”生產者—消費者“問題的示例,最後現了一個迭代器。 一、基本概念和常用函數 協同程序(coroutine

原创 程序員面試題精選100題(28)-字符串的排列[算法]

題目:輸入一個字符串,打印出該字符串中字符的所有排列。例如輸入字符串abc,則輸出由字符a、b、c所能排列出來的所有字符串abc、acb、bac、bca、cab和cba。 分析:這是一道很好的考查對遞歸理解的編程題,因此在過去一年中頻繁

原创 程序員面試題精選100題(19)-反轉鏈表[數據結構]

題目:輸入一個鏈表的頭結點,反轉該鏈表,並返回反轉後鏈表的頭結點。鏈表結點定義如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 分析

原创 程序員面試題精選100題(17)-把字符串轉換成整數[算法]

 題目:輸入一個表示整數的字符串,把該字符串轉換成整數並輸出。例如輸入字符串"345",則輸出整數345。 分析:這道題儘管不是很難,學過C/C++語言一般都能實現基本功能,但不同程序員就這道題寫出的代碼有很大區別,可以說這道題能夠很好

原创 程序員面試題精選100題(27)-二元樹的深度[數據結構]

題目:輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度爲樹的深度。 例如:輸入二元樹:                                       

原创 程序員面試題精選100題(26)-和爲n連續正數序列[算法]

題目:輸入一個正數n,輸出所有和爲n連續正數序列。 例如輸入15,由於1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-5、4-6和7-8。 分析:這是網易的一道面試題。 這道題和本面試題系列的第10題有些類似

原创 程序員面試題精選100題(18)-用兩個棧實現隊列[數據結構]

前幾天實在太忙,今天繼續,雖然是轉載,但每天可以學習一點,進步一點。 題目:某隊列的聲明如下: template<typename T> class CQueue { public: CQueue() {}