48. Rotate Image - Medium 前往題目 想法 快速找了一下規律,沒有找到 思路 每個cell都反轉其row和column,也就是(1, 0)變為(0, 1),兩個cell互換 然後每行前後對調 Time: $O(N^2)$Space: O(1) Code討論區解答 class Solution { public void rotate(int[][] matrix) { // 2024-01-10 Leetcode > Medium #Leetcode #心得 #Array #Math #Matrix
221. Maximal Square - Medium 前往題目 想法 只想得到暴力解 覺得優化應該是從側邊開始,根據以往經驗,因為這樣才能memorize同時確保每次只有一種狀況,往內推進的時候也都能用到cache 思路Top down 從左上開始 每個cell都檢查其右、下,斜右下,藉以更新當前cell 直到最後就會得到一個紀錄每個格子最大square的表格 Time: O(M * N)Space: O(M * N) Bottom up(D 2024-01-10 Leetcode > Medium #Leetcode #心得 #Array #Matrix #Dynamic Programming
Flask重構-使用工廠方法和藍圖 雖然初步開發的時候可以不用管結構,全部程式碼都塞在一起就好,但是遇到要擴展或是測試的時候問題就出現了,很多潛在的問題在程式擴展的路上會出現,增加很多時間成本。而我自己也想練習一下寫測試,有好的結構才能快速切換測試和開發的環境,剛好藉由自己的這個小project來玩玩看 結構參考《Flask Web開發》 以下是重構後的資料結構 code都拆開放在專屬的py檔案裡了 app資料夾是放Fla 2024-01-09 Project #Flask #Factory Pattern #Blueprint #Configuration
283. Move Zeroes - Easy 前往題目 想法 只想得到用一個額外的陣列儲存非零項,這樣空間和時間都是O(N) 思路題目很詐,說move all 0's to the end of it,這樣第一眼就在想要怎麼把0移到後面,但其實只要反過來想,把非零項移到前面就好了,最後再補上零即可… 把非零項移到前面 補上所需的零 Codeclass Solution { public void moveZe 2024-01-09 Leetcode > Easy #Leetcode #心得 #Array #Two Pointers
234. Palindrome Linked List - Easy 前往題目 想法 因為是單鏈,所以只能先找中間點,不然沒有基準 找到中間點後就可以知道左半部和右半部的分水嶺 沒想到可以Reverse 思路 找到中間點 反轉右半邊 檢查palindrome 反轉那邊有點繞,但基本上就是 定義一個previous指針,然後會從slow指針開始反轉(因為他一定在mid+1) 存slow.next,也就是原來的下一個 slow.next換成previous,這裡 2024-01-09 Leetcode > Easy #Leetcode #心得 #Stack #Recursion #Two Pointers #Linked List
150. Evaluate Reverse Polish Notation - Medium 前往題目 之前寫過,搬運一下 想法 這題應該算是easy才對,五分鐘就想出來了,但也有可能是因為有先備知識 這題的先備知識就是Stack,不熟練以及不熟悉Stack的特性有可能會想不出來 少數自己想出來的medium,開心😆 思路 建立stack 疊代所有token 遇到symbol就pop兩個數字然後做運算 結果push回stack裡 直到token都用完 回傳stack.pop,因為這時 2024-01-07 Leetcode > Medium #Leetcode #心得 #Stack #Array #Math
133. Clone Graph - Medium 前往題目 寫過了,搬運一下~ 想法 這題依舊沒發現可以用BFS,但是有想過484可以 DFS也可以!反正就是疊代樹 基本上就是使用hashmap來儲存對應關係,用來判斷clone了沒 然後DFS或BFS所有節點 思路 A hashmap for old node to new node dfs if the node already in the map, return it Otherwis 2024-01-07 Leetcode > Medium #Leetcode #心得 #Hash Table #Depth-First Search #Breadth-First Search #Graph
102. Binary Tree Level Order Traversal - Medium 前往題目 之前寫過了,搬運一下 想法 這題居然沒想到用BFS,看來我又忘了它的存在 思路 用BFS Codepublic List<List<Integer>> levelOrder(TreeNode root) { // Queue for processing Queue<TreeNode> q = new LinkedList<>(); 2024-01-07 Leetcode > Medium #Leetcode #心得 #Binary Tree #Breadth-First Search #Tree
15. 3Sum - Medium 前往題目 照搬一下之前寫的 想法 這題很難,覺得應該要是hard 解法不複雜,但想法很有挑戰性 先排序是因為這樣l和r pointer的位置就很清楚了,l往右一定是維持或是sum變大,r往左一定是維持或是sum變小 這個解法是$O(N^2)$ 思路 Sort it iterate the nums Check if duplicate to the previous number (To 2024-01-07 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Sorting
3. Longest Substring Without Repeating Characters - Medium 前往題目 搬運一下之前的心得 想法 這題也沒寫出來,有嘗試用2 pointers和hashmap做,但失敗了 解法看了半小時才懂,卡在為甚麼要remove那個character,當發現有同樣的時候 原因是因為那整個substring都不能要了,也記錄了長度,所以會逐漸remove 思路 Set儲存substring Sliding window char沒在set裡面的話就加進去,然後看看有沒 2024-01-06 Leetcode > Medium #Leetcode #心得 #String #Hash Table #Sliding Window