16. 3Sum Closest - Medium 前往題目 想法 應該可以轉換2sum來做,但不知道有沒有更好的方法 思路沒有更好的方法了,只能$O(N^2)$ 三個一組來看 固定第一個,後兩個binary search 每次都計算差,有更小就加到答案裡去(不要加成difference) Codeclass Solution { public int threeSumClosest(int[] nums, int tar 2024-01-23 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Sorting
977. Squares of a Sorted Array 前往題目 想法 直接一個一個平方,然後用comparator的方式排進新的array 中間一定是最小的,2 pointers應該可以用 思路 2 pointers,大的先加入答案,直到最小值 反向加入,回傳時就不用額外的操作反轉array Code class Solution { public int[] sortedSquares(int[] nums) { 2024-01-22 Leetcode > Easy #Leetcode #心得 #Array #Two Pointers #Sorting
572. Subtree of Another Tree - Easy 前往題目 想法 找subRoot在原樹的位置 找到後直接開始檢查兩樹是否一樣 思路 檢查兩樹的是否為空,subRoot樹空代表一定是true,因為null是所有樹的子樹;而root樹空如果subRoot樹也為空,那也是true 往左右子樹前進,每次都檢查是否兩樹為相同樹 Time: $O(M * N)$ 因為每個節點都檢查是否為相同樹 Code (WA)明明簡單,但好像沒那麼簡單…不知道哪裡 2024-01-22 Leetcode > Easy #Leetcode #心得 #Binary Tree #Depth-First Search #Tree #String Matching #Hash Function
70. Climbing Stairs - Easy 前往題目 想法 在想要用dp,但是關係式想不出來 思路 最後兩個一定都是1種方法能走到 以他們為基準向前就能推出答案 下面i還是從0開始因為沒有差別,沒有用到i Code class Solution { public int climbStairs(int n) { // Pointer int one = 1, two = 1 2024-01-21 Leetcode > Easy #Leetcode #心得 #Math #Dynamic Programming #Memoization
238. Product of Array Except Self - Medium 前往題目 想法 想不出不用除法怎麼解 思路 利用prefix和postfix sum 先疊代一次建構prefix sum 再由後往前直接建構答案 看不懂的話可以把postfix sum和prefix sum各列出來,就可以發現只要把任何一個位置的postfix以及同位置的prefix sum乘起來就是答案 Code class Solution { public int[ 2024-01-21 Leetcode > Medium #Leetcode #心得 #Array #Prefix Sum
322. Coin Change - Medium 前往題目 搬運~ 想法 這應該算是我第一個正式想過的dynamic programming題目了 難到爆 期待融會貫通的那天 答案幾乎只能用抄的 思路 用DP bottom up的方式從amount是0的時候開始,因為amount為0一定是用0個硬幣 從amount為1循環到amount本身 每個循環都檢查每個coin是否能被納入考量,amount - coin為正整數時就代表可能可以被當作答 2024-01-20 Leetcode > Medium #Leetcode #心得 #Array #Dynamic Programming #Breadth-First Search
208. Implement Trie (Prefix Tree) - Medium 前往題目 之前寫過,搬運一下 想法 大概念是看影片才得來 一半是自己照著概念寫出來的 但class之間attribute的操作不熟練 而且原來inner class的private,包含他的class是可以存取的 本來想說要寫get set,但根本不用 思路 新建TrieNode class,用以表示Trie的節點 每個node都有自己的children Trie物件裡新增instance v 2024-01-20 Leetcode > Medium #Leetcode #心得 #String #Hash Table #Trie #Design
如何寫好git commit message 本篇筆記搬運以及修改WadeHuang大大的部分文章:Git Commit Message 這樣寫會更好,替專案引入規範與範例 寫好commit訊息,造福同行,也為自己積陰德 怎麼寫比較好? 註解紀錄在commit裡面可以保持程式碼的整潔和可讀性 獨立commit每個不同意義的異動才不會混在一起 Commit只包含: Why和What Commit加上issue編號方便追蹤異動原因 規範範例 詳 2024-01-19 綜合 #git
華碩智慧輸入法-繼十年前的好打注音後又一強大好用的輸入法 官網 原本只限華碩電腦可使用,現在已開放在microsoft store下載 特點: 注音/英文混合輸入(無需切換中英) 選詞演算法優化 自動預測字詞 快速輸入各式各樣的標點和特殊符號 框選查詢(可直接英翻中) 刪除贅字(自動刪除多打的字) 自訂詞彙 快捷文字本,快速輸入地址、姓名等自訂義字詞 實測兩個禮拜覺得很好用,直接把微軟內建的注音刪掉了,雖然偶爾會出現要打英文卻跑出中文,但 2024-01-19 綜合 #注音輸入法
190. Reverse Bits - Easy 前往題目 想法 沒想法,對bit manipulation不熟 思路 重複以下步驟32次,因為有32個bit 把result左移1,以空出最後一個bit,然後把n的最後一個bit加入(這樣n的最後一位就會變成result的第一位) 把n往右移(去除最後一位) Codepublic class Solution { // you need treat n as an unsi 2024-01-19 Leetcode > Medium #Leetcode #心得 #Bit Manipulation #Divide and Conquer