博客 / 列表

大道無情我有情 - 【每日一題】漢諾塔

漢諾塔:漢諾塔(又稱河內塔)問題是源於印度一個古老傳説的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞着64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。 漢諾塔問題分三步: 將 0 ~ n -1 號圓盤從 from 柱子移動到 other 柱子。 將

遞歸 , 算法 , 面試

大道無情我有情 - 【每日一題】調整搜索二叉樹中兩個錯誤的節點

一棵二叉樹原本是搜索二叉樹,但是其中有兩個節點調換了位置,使得這棵二叉樹不再是搜索二叉樹,請找到這兩個錯誤節點並返回。 已知二叉樹中所有節點的值都不一樣,給定二叉樹的頭節點 head,返回一個長度為 2 的二叉樹節點類型數組 errs,errs[0] 表示一個錯誤節點,errs[1] 表示另一個錯誤節點。 解法一:遞歸 如下圖對搜索二叉樹進行中序遍歷,可以得到一個升序數組。如果搜索二叉樹中

算法 , 二叉搜索樹 , 面試問題 , 二叉樹 , 數據結構和算法

大道無情我有情 - 【每日一題】LFU 緩存

一個緩存結構需要實現如下功能: void set(int key,int value):加入或者修改 key 對應的 value int get(int key):查詢 key 對應的 value 值 但是緩存最多放 K 條記錄,如果新的 K + 1 條記錄需要加入,就需要根據策略刪掉一條記錄,然後才能把新記錄加入。 這個策略為:在緩存結構的 K 條記錄中,哪一個 key 從進入緩存結

, 算法 , 面試問題 , 鏈表 , 數據結構和算法