Array 是 Java 中的基本功能,而 ArrayList 是 Collection 的一部分; ArrayList 和 LinkedList 都是 Java 中的集合類型,它們都實現了 List 接口。基本特徵簡單如下 :

  • Array 是一個有固定大小的,每次創建都需要設定,而且在創建後,是不能再更改大小
  • ArrayList ,是一個有浮動大小的Array,且適用於需要快速訪問集合中的元素的場景。
  • LinkedList 適用於頻繁插入和刪除元素的場景。

如果需要實現隊列或棧等數據結構,也可以選擇 LinkedList。

Continue reading

使用 HashMap 的方法 :

computeIfAbsent(K key, Function remappingFunction)

其中 remappingFunction 是一個 Functional interface

  • input 為 map 的 key
  • output 會成為 map 的 value

HashMap 的 computeIfAbsent 方法,在 key 不存在時,會做 remappingFunction 的操作,所以再也不會因為漏寫 if x == null 而出現空指針的 bug 了。

Continue reading

這種飛航問題基本上都是屬於 Graph 題,題目敘述也很生活化(根本旅行必備知識)。 因為所有的路徑有且只會被用一次,故是一個 Euler Circuit

進一步抽象,可說這題是屬於 Post-order traversal on Edges 問題。 從入口做 post-order ,會是出口先被紀錄,然後再往回 backtracking 回入口,把路上的所有 node 都記下來。 老實說技巧性有點太強,且還是高頻…。 另外注意英文閱讀,有些單字很重要例如 lexical order,沒注意到可能會出現錯誤。

Continue reading

最長回文子串 (Longest Palindromic Substring) 是常考題。Palindrome 就是正讀反讀都一樣的詞語,比如範例給的 “bab”、 “bb” ,實際單字如 “level” 等等都屬於它。因為較好的解法是 DP 類型,初見就能想到,難度也比較高。一般人能熟悉 Dynamic Programming - 2D matrix 解就好了。(看過令人膜拜的神解 Manacher’s Algorithm,時間複雜度提升到了 O(n) …)

Continue reading

Graph 介紹

Graph 用於表示物體與物體之間存在某種關係的結構,是內存中不一定連續的資料,每個節點會一個或多個 Reference 指向其他節點

  • 可能有環
  • 分無向圖和有向圖
  • 沒有固定入口
  • 可能有多個入口

Continue reading

Author's picture

李昀陽 YunYang Lee

Welcome to my Tech Note. You can read some of the chapters below.

Software Engineer

Taiwan