原创 《劍指offer》:[55]字符流中第一個不重複的字符

題目:請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符“google"時,第一個只出現一次的字符是"l"。     此題和[3

原创 《劍指offer》:[52]構建乘積數組

題目:給定一個數組A[0,1,2...N-1],請構建一個數組B[0,1,2,...N-1],使B中的元素B[i]=A[0]*A[1]*...*A[i-1]*a[i+1]*...*a[n-1],不能使用除法。解決思路:通過正反兩次來求B[

原创 一條更新sql的執行之路

目錄 Redolog與binlog    一個 update sql 的執行流程? 思考解惑 Redolog與binlog    數據庫的查詢操作具有天然冪等性,不會對數據庫有任何的修改。但是mysql如何實現對數據庫的更新操作呢?這裏主

原创 《劍指offer》:[56]五岔路口交通管理紅綠燈設計

抽象建模能力       計算機只是一種工具,是爲我們服務所驅使的工具,我們不能一頭扎入這個編程的海洋出不來甚至迷失了方向。它的作用是幫助我們解決實際生活中的問題。程序員的工作就是把各種現實的問題抽象成數學模型並用計算機的編程語言表達出來

原创 數據庫事務隔離

目錄 數據庫隔離級別 隔離級別下的問題 髒讀 不可重複讀 幻讀 事務隔離的實現 MVCC 事務的啓動方式 思考及解答 事務:要麼什麼都做,要麼都不做,沒有中間狀態。 All or Nothing。      MySql是一個支持多引擎的系

原创 《劍指offer》:[60]把二叉樹打印成多行

題目:從上到下安層打印二叉樹,同一層的結點按從左到右的順序打印,每一層打印一行。例如,圖(1)中二叉樹以及打印結果爲: 這個題其實很簡單,我們只需要設置兩個變量就可以搞定。一個變量表示當前層中還沒有打印的結點數,另一個變量表示下一層結點

原创 一條查詢sql的執行之路

 目錄 連接器 查詢緩存 分析器 優化器 執行器 小結 思考解惑    數據庫增查改刪,我們平時用的很熟悉,執行一個sql語句,然後返回一個結果,但是這個過程到底是什麼樣的呢,下面來簡單看一下其中的過程? 圖一:mysql的邏輯架構圖

原创 《劍指offer》:[54]表示數值的字符串

題目:請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。 例如,字符串“+100”,“5e2”,“-123”,“3.1416”及”-1E-16”都表示數值,但“12e”,”1a3.14”,”1.2.3”,”+-5”及“12e+5

原创 《劍指offer》:[58]二叉樹的下一個結點

題目:給定一棵二叉樹和其中一個結點,如何找出中序遍歷順序的下一個結點?樹中的結點除了有兩個分別指向左右子結點的指針外,還有一個指向父節點的指針。 分析:這裏已經說了是中序遍歷,所以我們就以中序遍歷爲例。由於是二叉樹,所以有三種情況;(1)

原创 《劍指offer》:[64]數據流中的中位數

題目:如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麼中位數就是所有數據排序後中間兩個數的平均值。 例如:1,2,3,4,5的中位數爲:3。1,2

原创 《劍指offer》:[65]滑動窗口的最大值

題目:給定一個數組和滑動窗口的大小,請找出所有滑動窗口裏的最大值。 例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小3,那麼一共存在6個滑動窗口,它們的最大值分別爲{4,4,6,6,6,5}。    滑動窗口這個概念在

原创 《劍指offer》:[51]數組中的重複數字

題目:在一個長度爲n的數組裏所有數字都在0到n-1的範圍裏。數組中某些數字是重複的,但是不知道有幾個數字重複了,也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。例如,如果輸入長度爲7的數組{2,3,1,0,2,5,3},那麼對應

原创 《劍指offer》:[66]矩陣中的路徑

題目:請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中任意一格開始,每一步可以在矩陣中間向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格子。具體是例如下圖:

原创 《劍指offer》:[59]對稱的二叉樹

題目;請實現一個函數,用來判斷一棵二叉樹是不是對稱的。如果一顆二叉樹和它的鏡像一樣,那麼它是對稱的。例如,下面二棵樹圖(1)就是對稱的二叉樹,而圖(2)(3)就不是的。 分析:我們知道樹的遍歷有三種方式:前,中,後。顧名思義,對稱就是左