560. Subarray Sum Equals K - Medium 前往題目 想法 Subarray的話應該還是需要backtracking 思路這題反而不用backtracking,而是用prefix sum 一個prefix sum表,紀錄每個sum出現的次數 每次都看當前需要多少才能達到k,檢查表中有沒有該sum,有的話就可以直接加到result了因為代表前面的這個sum再加上當前index的數值就等於我們要的k 出現新的sum就放到表中 這部分照著 2024-01-01 Leetcode > Medium #Leetcode #心得 #Array #Hash Table #Prefix Sum
用hexo建置網站以及日常操作筆記 建站好一陣子了,現在才回來寫筆記,可能有遺漏,歡迎留言 安裝hexo 安裝Nodejs和git(方便上傳github並建置網站) terminal裡執行安裝 npm install hexo-cli -g 在想安裝的資料夾底下初始化hexo blog,等於直接在該資料夾下新建網站了 hexo init blog cd blog 進入網站資料夾 hexo server在本機執行網站 he 2023-12-30 綜合 #hexo
Java常用資料結構和用法集合 主要是蒐集寫Leetcode或是日常開發的時候使用的資料結構,以及其用法,免得每次都要google,然後永遠搞不清楚到底要用add還是append ArrayListimport java.util.ArrayList; // import the ArrayList class ArrayList<String> cars = new ArrayList<String>(); 2023-12-30 Java > Data Structure #Java #Data Structure
148. Sort List - Medium 前往題目 想法 全部存下來,然後排序完再重新連接,但這樣就至少O(2n + nlogn)也是挺暴力了的😂 思路這題的思路很簡單,但是指針操作一樣很容易搞混😂 把list分成左半部和右半部 利用mergesort把左半和右半排序好 最後再把左右合併 Linked List找中心點的方法 private ListNode getMid(ListNode head) { / 2023-12-30 Leetcode > Medium #Leetcode #心得 #Two Pointers #Sorting #Linked List #Merge Sort #Divide and Conquer
22. Generate Parentheses - Medium 前往題目 想法 一樣想說要用stack,但是如何使用想不出來 思路 使用backtracking,才能得到所有組合 每次backtrack都檢查(的數量是否小於n,是的話就加上 只有當)的數量小於(的時候才加上) 當)和(的數量等於n的時候才加入到結果裡 backtracking依然很難在腦袋裡運轉… Code 使用stack的寫法 class Solution { Li 2023-12-29 Leetcode > Medium #Leetcode #心得 #String #Dynamic Programming #Backtracking
2. Add Two Numbers - Medium 前往題目 想法 每個digit都用數學式運算成一個數字,有個儲存的總數 思路看了Neetcode大大的影片才意識到要回傳的是Linked list😂又是題目沒看清楚,而且也沒意識到數字由後往前,其實題目給很多方便了 兩個list,一對一對的看,也就是一位數一位數的看 每個位數都算出值和進位的數字,值加到list裡,carry繼續給下一輪 建議看code,比較清楚 Codeclass So 2023-12-29 Leetcode > Medium #Leetcode #心得 #Recursion #Math #Linked List
55. Jump Game - Medium 前往題目 想法 以前做過,但完全忘了😂 思路 貪心演算法,從最後面開始 在每個index檢查是否能到goal,如果可以的話就把當前index變為goal goal最後為0的話就是可以到最後,否則一定不行 Code class Solution { public boolean canJump(int[] nums) { int goal = n 2023-12-28 Leetcode > Medium #Leetcode #心得 #Array #Greedy #Dynamic Programming
14. Longest Common Prefix - Easy 前往題目 想法 找到最長的那個,全部記錄下來,用hashmap,或是26空位的陣列 接著檢查其餘所有的String,每次都紀錄最小值,也就是如果第一個可以匹配到4個,第二個只能2個,那結果還是2 但是這樣有個問題,因為每個都是從0個開始算,那完全沒有的話就變成0是答案了… 廢棄Code class Solution { public String longestCommonP 2023-12-28 Leetcode > Easy #Leetcode #心得 #String #Trie
191. Number of 1 Bits - Easy 前往題目 想法 直覺想法是轉成string然後一個一個看,但這樣肯定是暴力解🤣 思路 &AND操作,或是%MOD操作,就可以判斷最後一位是不是1 判斷完後右移,直到n為0 這題真的簡單,但是需要Bit manipulation的概念 Code public class Solution { // you need to treat n as an unsigne 2023-12-27 Leetcode > Easy #Leetcode #心得 #Bit Manipulation
100. Same Tree - Easy 前往題目 想法 這題幾個月前做過,這次看到的第一個想法是檢查兩個樹,遇到左子樹就+1,右子樹就-1 思路其實不用這麼麻煩,直接同時檢查兩個樹就好,因為每個位置都要對應,值也要對應 Codeclass Solution { public boolean isSameTree(TreeNode p, TreeNode q) { // Successful 2023-12-27 Leetcode > Easy #Leetcode #心得 #Binary Tree #Depth-First Search #Tree