原创 【劍指offer】題61:二叉樹序列化、反序列化

使用stringstream http://blog.csdn.net/xw20084898/article/details/21939811 stringstream 是 C++ 提供的另一個字串型的串流(stream)

原创 【面經筆記】主定理

遞歸式: T(n)=aT(n/b)+f(n) 含義: 將規模n的問題分爲a個子問題,每個子問題的規模是n/b,其中a個子問題遞歸地進行求解,每個花費時間T(n/b)。函數f(n)包含了問題分解和子問題解合併的代價。

原创 【面經筆記】好未來 - 已掛

1、 手寫二叉搜索樹的插入、刪除 沒寫過,刪除操作完全寫錯了。 2、輸入流的頻率TOPk問題,引出堆的實現 我先實現了算法導論中自頂向下的維護堆的函數MAX_HEAPIFY()。 面試官說不好,應該寫個自底向上的、、、、、、、、

原创 【劍指offer】題60:分層遍歷打印二叉樹

void Print(TreeNode* pRoot) { queue<TreeNode*> que; int cur_count(0); int next_count(0); if (pRoo

原创 【算法題】查找旋轉數組的值

在一個排序的數組中,如{1,2,3,4,5,6,7},經過旋轉後得到{4,5,6,7,1,2,3},當然也可以得到原數組{1,2,3,4,5,6,7},在該旋轉後的數組中查找某個元素。 陷阱在於數組不是嚴格遞增的 比如{1,1,1

原创 【算法題】兩有序數組中位數

有兩個排序的數組,長度都爲n,求合併後的排序數組的中位數。要求時間複雜度爲log(n)。 解法1:直接的解法是遍歷兩個數組並計數,類似歸併排序裏面的有序數組的合併,複雜度爲O(n) 解法2:分治策略: 設兩個數組爲A[n],B

原创 【讀書筆記】windows核心編程 - 異常處理相關

_try 和 _finally的使用: 終止處理程序: 不管try段代碼是如何退出的——無論是return、goto、break、continue(除非是exitprocess、exitthread、terminate

原创 【算法題】最大乘積

給定一個無序數組,包含正數、負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度:O(n),空間複雜度:O(1) 輸入描述: 無序整數數組A[n] 輸出描述: 滿足條件的最大乘積 輸入例子1: 4 3 4 1

原创 【劍指offer】題63:二叉搜索樹的第k個節點

TreeNode* KthNode_core(TreeNode* pRoot, int& k) { TreeNode* target(NULL); if (pRoot->left!=NULL) {

原创 【語法】sizeof和strlen

http://blog.csdn.net/niushuai666/article/details/7677210 一、sizeof sizeof(…)是運算符,而不是一個函數。 其值在編譯時即計算好了。 由於在編譯時計算,因此

原创 【面經筆記】進程調度方式

分爲兩大類:可剝奪和不可剝奪 基於優先級調度: 優先級高的進程先運行,可剝奪 基於調度策略: 選擇函數: 先進先出(FCFS、FIFO) 改進:將優先級與隊列結合,每個優先級一個隊列 輪詢/輪轉 週期性間隔產生中斷

原创 【數據結構】搜索二叉樹

手寫實現搜索二叉樹: 樹的節點定義: class TreeNode { public: TreeNode(int v) :value(v){}; TreeNode* left_son = NULL;

原创 【劍指offer】題61:之字打印二叉樹

vector<vector<int>> Print(TreeNode* pRoot) { vector<vector<int>> vec; if (pRoot== NULL) return vec

原创 【面經筆記】多線程

線程的基本概念、線程的基本狀態及狀態之間的關係? http://blog.csdn.net/bornlili/article/details/55805732 線程是進程的一個順序執行流。 線程是進程中的一個執行控制單元,執行路徑

原创 【算法題】對稱二叉樹判斷

解法1: 分層遍歷二叉樹,判斷每一層的節點是否軸對稱。 #include <iostream> #include <vector> #include <algorithm> #include <numeric> using na