原创 後端緩存

每日一課【後端緩存系統】 後端緩存可以分爲分佈式緩存、本地緩存兩種。   兩者區別:   分佈式緩存需要遠程調用,多了一次網絡開銷。 同樣情況下,分佈式緩存要慢於本地緩存。 本地緩存不能跨區域共享。   適用場景:    

原创 leetcode 實現 Trie (前綴樹) (單詞查找樹)

208. 實現 Trie (前綴樹) 題目描述 實現一個 Trie (前綴樹),包含 insert, search, 和 startsWith 這三個操作。 示例: Trie trie = new Trie(); trie.inser

原创 數據結構之字典樹 Trie 單詞查找樹

參照算法第4版,強烈建議看書上的實現步驟,這裏只是一個個人記錄。 單詞查找樹的性能: 查找命中所需的時間與被查找的鍵的長度成正比。比如單詞有7個字符,查找或插入操作最多隻需要檢查8個節點。 查找未命中只需檢查若干個字符。   所需空間:

原创 leetcode 添加與搜索單詞 - 數據結構設計

用單詞查找樹,實現方法有很多,但是看了算法第4版的實現發現代碼真的簡潔強大。 可以先看這篇文章:單詞查找樹 這裏搜索單詞只需要判斷true或false,不需要全部匹配,稍稍修改了下。 class WordDictionary {

原创 leetcode 單詞搜索 dfs

79. 單詞搜索 給定一個二維網格和一個單詞,找出該單詞是否存在於網格中。 單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內的字母不允許被重複使用。 示例: boar

原创 使用java8 Optional防止空指針

  阿里規範推薦使用     java8的Optional中,上面兩個方法是最長用的   1.ofNullable(T) 意思就是可以爲空的範型 2.of(T) 值不能爲空,否則會拋出NullPointerException    

原创 docker安裝nginx並運行

1.拉取nginx的鏡像: docker pull ningx   2.運行: docker run -d nginx   -d表示後臺運行,可以用docker run --help查看。   可以用docker ps查看正在運行的容器

原创 數據結構之散列表

散列表(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函數,存放記錄的數組叫做散列表。

原创 leetcode 只出現一次的數字

給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。 說明: 你的算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎? 示例 1: 輸入: [2,2,1] 輸出: 1 示例 2

原创 數據結構之符號表及其實現(Map)

符號表主要就是用來將一個鍵和一個值聯繫起來。 定義:符號表是一種存儲鍵值對的數據結構,支持兩種操作:插入(put),即將一組新的鍵值對存入表中;查找(get),即根據給定的鍵得到相應的值。 在實現前,我們遵循以下規則: 每個鍵只對應一

原创 數據結構之二叉查找樹

定義:二叉查找樹(Binary Search Tree),(又:二叉搜索樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點

原创 Trie 單詞查找樹 java實現(來自算法第4版)

強烈建議看書上的實現步驟,這裏只是一個個人記錄。 單詞查找樹的性能: 查找命中所需的時間與被查找的鍵的長度成正比。比如單詞有7個字符,查找或插入操作最多只需要檢查8個節點。 查找未命中只需檢查若干個字符。   所需空間:在RN~RNw之

原创 leetcode 數組中的第K個最大元素

題目描述 在未排序的數組中找到第 k 個最大的元素。請注意,你需要找的是數組排序後的第 k 個最大的元素,而不是第 k 個不同的元素。 示例 1: 輸入: [3,2,1,5,6,4] 和 k = 2 輸出: 5 示例 2: 輸入:

原创 劍指offer 最小的k個數

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。   解法一:根據快速排序,基於數組的第k個數字來調整,使得k左邊的數字都小於k,k右邊的數字都大於k。

原创 劍指offer 二叉樹中和爲某一值的路徑

題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,數組長度大的數組靠前) 例如,求路徑和爲22: