原创 劍指offer-10-旋轉數組的最小數字-Java

把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。 NOTE:給出的所

原创 二叉樹的先序遍歷非遞歸-Java

面小米算法崗的時候寫過一次,當時用的C,現在用Java寫一下。 思路:用棧來實現。構造棧,把根節點入棧。循環棧中的元素,出棧一個節點(第一次出的是根節點),輸出data,如果有左孩子的話,左孩子進棧;有孩子同理。 privat

原创 手寫單例模式(餓漢、懶漢、雙重校驗,靜態內部類)-Java

除了雙重校驗,還有一種方式就是使用靜態內部類來實現,這兩個都是線程安全的。 手寫了下面以上四個單例模式,僅供參考 public class Singleton{ private static Singleton instance =

原创 字符串翻轉,保持單詞內字母的順序I love you變爲 you love me

晚上看博客的時候想起了一道考研時候的題,三次反轉實現字符串翻轉(記爲A),比如輸入abcdefg  ->  efgabcd。準備複習一下,結果找到了更有意思的一道題(記爲B),輸入輸出爲: I love you-> you love me

原创 先序、中序、後續、層次遍歷二叉樹-非遞歸版-Java

先序遍歷 面小米算法崗的時候寫過一次,當時用的C,現在用Java寫一下。 思路:循環棧中的元素,出棧一個節點(第一次出的是根節點),輸出data,如果有左孩子的話,左孩子進棧;有孩子同理。 用棧來實現,這裏用的是Stack。 構造一個棧,

原创 刪除鏈表的重複元素(鏈表去重)-Java

鏈表去重,沒什麼好講的,主要思路就是判下一個結點是否爲空,不爲空就判值是否和當前結點相等。 本來劍指offer上寫的是去除重複元素,且重複元素不保留。 但本人覺得沒必要,就只做了去重,重複元素保留了。 注意以下代碼劍指offer是不AC的

原创 數組逆置-C語言實驗

有一種偷懶的方式:倒序輸出數組 代碼如下: # include <stdio.h> # include <stdlib.h> # include <string.h> int main(void){ int m = 0;

原创 劍指offer-二維數組的查找-每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序

 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 思路:查找不是問題,時間複雜度纔是。暴力查

原创 求最小郵票數

有若干張郵票,要求從中選取最少的郵票張數湊成一個給定的總值。     如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張郵票:3分、3分、4分即可。 # include <stdio.h> # define INF

原创 決策樹基本思想

決策樹 決策樹又稱爲判定樹,是運用於分類的一種樹結構,其中的每個內部節點代表對某一屬性的一次測試,每條邊代表一個測試結果,葉節點代表某個類或類的分佈。決策樹的決策過程需要從決策樹的根節點開始,待測數據與決策樹中的特徵節點進行比較,並按