67. Add Binary - Easy 前往題目 之前寫的文章 想法 從後面開始運算,但運算過程卡住 思路 兩個指針都從後面開始 每次循環都執行carry + aPointer + bPointer 根據當前的sum計算新的carry sum % 2加入到要回傳的String裡面 移動指針 當兩個指針都已經小於0的時候跳出 如果還有carry就加上 Codeclass Solution { public Stri 2024-02-18 Leetcode > Easy #Leetcode #心得 #String #Math #Bit Manipulation #Simulation
981. Time Based Key-Value Store - Medium 前往題目 之前的文章 想法 Hashmap儲存鍵值對,重點是如何根據timestamp取得同一個或是最相近timestamp的key呢 題目說timestamp和set都是嚴格遞增的,所以不會出現重複的時間戳,那是不是可以組timestamp -> value 思路大致上有兩種做法 使用Pair 使用TreeMap 這裡使用pair,舊的那篇兩個方法都有寫 利用Hashmap儲存k 2024-02-18 Leetcode > Medium #Leetcode #心得 #String #Hash Table #Binary Search #Design
169. Majority Element - Easy 前往題目 之前寫的文章 想法 排序後中間的一定是最多的 或是用hashmap存,然後每次都更新最大值,這樣比排序快一點,因為只要O(n),但空間也需要O(n) 思路這題的關鍵是Boyer–Moore majority vote algorithm(摩爾投票算法),這種人家研究出來發表的算法只能直接死背了,根本不可能自己想出來😂 疊代整個陣列,維護count和candidate 只要coun 2024-02-17 Leetcode > Easy #Leetcode #心得 #Array #Hash Table #Sorting #Divide and Conquer #Counting
236. Lowest Common Ancestor of a Binary Tree - Medium 前往題目 之前寫的文章 想法 用DFS然後每個node回傳之前要判斷並帶值 沒有想出關鍵的判斷部分該怎麼寫 思路 DFS 當找到目標的a或b的時候就+1 這樣搜尋到底然後準備往回的時候就會經過各個可能的ancestor,只要發現該node包含ab就可以直接回傳了 Codeclass Solution { TreeNode res; public TreeNode l 2024-02-17 Leetcode > Medium #Leetcode #心得 #Binary Tree #Depth-First Search #Tree
56. Merge Intervals - Medium 前往題目 之前寫的文章 想法 先sort再用掃描線加入 這次只差條件沒寫好 思路 先照start point由小到大排序,才能讓可以merge的排在一起 接著疊代所有區間,遇到起始點小於等於暫存區間的終點等於有重疊,先merge但還不要加入答案,因為有可能好幾個區間都重疊 Codeclass Solution { public int[][] merge(int[][] i 2024-02-17 Leetcode > Medium #Leetcode #心得 #Array #Sorting
746. Min Cost Climbing Stairs - Easy 前往題目 思路 從尾端開始,頂端需要0,最後一個台階需要至少本身的cost 倒數第二個台階需要本身的cost,再加上最後一個台階和頂端的最小值 以此類推可以得出: dp[i] = cost[i] + Math.min(dp[i + 1], dp[i + 2]) 需要O(N)空間 其實也可以不用dp陣列,用原本的cost陣列就好,因為要不就是bottom up,要不就是top down,都是一步 2024-02-16 Leetcode > Easy #Leetcode #心得 #Array #Dynamic Programming
1584. Min Cost to Connect All Points - Medium 前往題目 思路有兩種主要做法: prim’s Kruskal’s Prim’s(使用PQ) 循環直到全部的點都走過 在循環裡,每次都從pq取出並查看是否已經走過,否則加入走過的點並把當前weight加入結果 每次都把該點所有的邊(與尚未走過的點)都加入pq 因為一開始起始點是0,保證最小值,接下來加入pq時會自動由小到大排序,所以保證永遠都取到最小的邊 Kruskal’s(使用Union- 2024-02-16 Leetcode > Medium #Leetcode #心得 #Array #Graph #Union Find #Minimum Spanning Tree
CS:APP 電腦系統:程式設計師的角度 第一章筆記 這是來自卡內基梅隆大學的優質課程,對底層系統的理解越深,對程式設計師來說只有百利而無一害。雖然一時半刻看不到有什麼成效,但未來的某些日子一定會覺得當初學了這些真是太好了 電腦名詞譯名 首先從hello world開始以C語言來說,讓寫好的以下程式碼執行,需要經過如下步驟 #include <stdio.h> int main() { printf("hello, worl 2024-02-14 電腦科學 > Computer Systems - A Programmer's Perspective #Computer System
130. Surrounded Regions - Medium 前往題目 想法 用DFS看每個島嶼在哪,然後翻轉,但是要注意外圈的O會使得比鄰的O不能被反轉,這部分不知道怎麼做,得另外再搜尋哪些有比鄰 思路 用BFS從border開始更好理解 從外圈開始遇到O就BFS搜尋比鄰它的O,感染的概念,一個接著一個感染,並先標記為# 最後搜尋完了之後再疊代整個board,遇到O就是沒有比鄰的,直接翻轉為X,遇到#就是比鄰的O,翻轉回O Code文字解析 cl 2024-02-14 Leetcode > Medium #Leetcode #心得 #Array #Matrix #Depth-First Search #Breadth-First Search #Union Find
695. Max Area of Island - Medium 前往題目 想法 和之前寫過的島嶼類似,但忘了怎麼開頭,只知道DFS會輕鬆一些 思路 利用DFS 從第一個cell開始,遇到水就跳過,遇到走過的cell也跳過,出界的也跳過 把每個區域的1都走過然後加起來,因為dfs遇到出界或是海水就會回傳,所以最終每個區域的面積都可以被單獨算出來,因為演算法不會越過水到另一片陸地。 Code class Solution { privat 2024-02-13 Leetcode > Medium #Leetcode #心得 #Array #Matrix #Depth-First Search #Breadth-First Search #Union Find