原创 LeetCode 238. 除自身以外數組的乘積(Java版)

題目 238. 除自身以外數組的乘積 題解 構造兩個數組left和right left[i] = nums[0] * nums[1] *…… * nums[i-2] * nums[i-1] right[i] = nums[i

原创 LeetCode 236. 二叉樹的最近公共祖先 (Java解法)

鏈接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree 注意這裏的問題其實就告訴了做題的人,這裏既沒有父親節點,也沒有二叉搜索樹的性

原创 LeetCode 31. 下一個排列(Java版)

題目 31. 下一個排列 題解 數學家 Narayana Pandita 提出的思想 1 初始化一個index,從數組倒數第二個元素開始尋找第一個nums[index] < nums[index + 1],也就是尋找遞減序列的前

原创 玩轉Java線程池(3):如何用松耦合的思想來修改創建線程的策略?

在上一篇:玩轉Java線程池(2):Tomcat是如何修改創建線程的策略的?中,我介紹了 Tomcat 是如何去改變原來的JDK中的創建線程的過程的。從中,我們發現 Tomcat 爲了達到改變創建過程的目的,繼承原來的Thread

原创 玩轉Java線程池(2):Tomcat是如何修改創建線程的策略的?

1 線程池創建線程的過程是怎樣的? 要知道創建線程策略是如何的,就要從構造函數入手,因爲構造函數中有幾個核心的參數 public ThreadPoolExecutor(int corePoolSize,

原创 玩轉 Java 線程池(1):線程池到底應該怎麼建?

0 創建線程池的核心問題 根據阿里巴巴的《Java開發規範》裏的一條規定, 這條規定指出了,當我們想使用線程池的時候,最好不要偷懶,最好要自己手動創建線程池,那麼問題就來了,手動創建線程池到底要如何去創建? 1 我的核心線程數量

原创 LeetCode 365. 水壺問題(Java 解法)

365 水壺問題 廣度優先搜索 我們要用一種方式來表示當前兩個水壺的狀態,這裏可以自己選擇,比如利用字符串,把兩個水壺當前的水量用下劃線拼接起來。我這選擇的構造一個新的類 Pair private class Pair {

原创 Java 中的移位那些事

移位 之所以會有移位操作,最重要的因爲計算機中的數據就是用二進制的格式來保存的。所以,在計算機中的加減乘除都是要計算機利用移位操作來完成的。 但是移位會伴隨着一個問題的產生,就是移位操作後的,空出來的位置要補什麼?根據補充的邏輯不

原创 LeetCode 146. LRU緩存機制(Java版)

題目 146. LRU緩存機制 題解 1 直接用LinkedHashMap來完成 class LRUCache { private LinkedHashMap<Integer, Integer> map; p

原创 第56周 ARTS 2019 11 10

Algorithm 384. 打亂數組 Review Java 8 HashMap Implementation and Performance Tip/Tech B+樹 Share 無人機找小男孩 Algorithm 384

原创 LeetCode 10. 正則表達式匹配(Java 版本)

題目 10. 正則表達式匹配 題解 回溯思想 1 因爲這題目中提到: 所謂匹配,是要涵蓋 整個 字符串 s的,而不是部分字符串。 所以這題就簡單了。 1 判斷是否當前的字符是否相等或者 p 的當前字符是 . 若爲tru

原创 LeetCode 34. 在排序數組中查找元素的第一個和最後一個位置(Java版)

題目 34. 在排序數組中查找元素的第一個和最後一個位置 https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-arr

原创 LeetCode 25. K 個一組翻轉鏈表(Java版)

題目 25. K 個一組翻轉鏈表 https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ 題解 我的指針的做法 我是喜歡用迭代來進行翻轉的所以我這裏還是用了迭代的思想

原创 第55周 ARTS 2019 11 03

Algorithm 289. 生命遊戲 Review Become a Master of Java Streams — Part 1: Creating Streams Tip/Tech 數據庫的索引 Share 機器學習就是

原创 Java 11 的String是如何優化存儲的?

優化的依據是什麼? Java 中的 char 是兩個byte大小,因爲我們大多數的時候操作數據都是都是用拉丁語系的字符的,而拉丁語系的字符只要用byte就足夠存儲了,根本就不需要char。所以如果我們發現發現了一個字符串裏只有拉丁