2013. Detect Squares - Medium 前往題目 想法 確定對角線 四邊等長 四個角90° 思路沒想到對角線就可以確定另外兩個點😭 Add 加入列表,並且紀錄個數 Count 疊代列表中所有的點,根據傳入的點算x1 - x2 == y1 - y2,如果是的話就代表這兩點可以繪製出正方形 確認另外兩點是否在列表中 存在就把個數相乘,因為重複的點可再和其他點組成正方形,即便位置一模一樣(題目設定) Code class De 2024-03-15 Leetcode > Medium #Leetcode #心得 #Array #Hash Table #Design #Counting
43. Multiply Strings - Medium 前往題目 思路總之就是模擬乘法過程,不過其中的中繼的數字要放法怎麼放,要加上原本的還是不加… 反轉兩個數字字符串 以直式乘法來看的話,是動下面,再動上面,例如23 * 45,是先3 * 5再3 * 4。和平常反過來 把結果放入陣列,兩個數字的位數加起來就是最多會有幾位 反轉陣列,去掉leading zeros 回傳答案 Code class Solution { publ 2024-03-14 Leetcode > Medium #Leetcode #心得 #String #Math #Simulation
202. Happy Number - Easy 前往題目 想法 一直算新的數字,然後每次都存到set裡面 檢查是否有一樣的,有的話就代表進入loop了,因為數字一樣,算出來的結果就一樣 思路 循環直到當前數字為1 每次循環都根據題目的公式算出新的值,然後檢查是否hashset裡面已經有了 有的話就代表無限迴圈 沒有的話就繼續 難得自己寫出來的題目:D Codeclass Solution { public boolean 2024-03-13 Leetcode > Easy #Leetcode #心得 #Math #Two Pointers #Hash Table
678. Valid Parenthesis String - Medium 前往題目 想法 想從單純合法括號衍生出加了*的解,但是不知道該怎麼處理 思路 遇到左與右括號正常增減計數 當遇到星號,紀錄其當成左括號與右括號的情況 如果星號都當成左括號還是無法匹配右括號直接回傳false,因為右括號無法靠左括號與空白補救 如果星號都當成右括號當無法匹配的時候,把右括號再變為左括號,因為左括號可以補救右括號 最後回傳右括號計數器,如果是0就代表成功匹配,因為右括號計數器會盡可 2024-03-12 Leetcode > Medium #Leetcode #心得 #Stack #String #Greedy #Dynamic Programming
763. Partition Labels - Medium 前往題目 想法 不知道如何判斷partition在何時結束 思路其實很簡單,疊代s的字符,每次都取最大的終點,這樣在一個partition結束時指針就會剛好等於end,因為此區間沒有更遠的字符了 紀錄每個字符(總共26個小寫字母)的終點 疊代s的所有字符,每次更新size和終點 指針等於終點的時候就是一個partition結束的時候 加入結果,並且歸零size Code class So 2024-03-11 Leetcode > Medium #Leetcode #心得 #String #Greedy #Two Pointers #Hash Table
1899. Merge Triplets to Form Target Triplet - Medium 前往題目 想法 題目根本沒看清楚😂以為只能選兩個,結果是可以每個都選,取max 思路 把不可能的去掉,也就是只要有比target大的那組就可以直接拋棄 剩下的全部取最大值看是否最終和target一樣,因為可以每個都取 Code主要參考了這個解答,因為比Neetcode大大的更直觀一點 class Solution { public boolean mergeTripl 2024-03-11 Leetcode > Medium #Leetcode #心得 #Array #Greedy
54. Spiral Matrix - Medium 前往題目 之前寫的文章 想法 初始的變數沒有想出來,有了left right top和bottom就簡單了 思路 定義上下左右邊界,以下的code要注意out of boundary 先取top elements 再取right elements 注意left要小於right,top要小於bottom以防special case 再取bottom elements 再取left element 2024-03-10 Leetcode > Medium #Leetcode #心得 #Array #Matrix #Simulation
8. String to Integer (atoi) - Medium 前往題目 之前的文章 想法 有寫出來但是一些test case沒過,找bug找到瘋掉 思路 忽略空白 決定正數還是負數 拼出數字,要防止溢出 回傳前確認要負數或正數 這題很容易條件沒考慮好… Codeclass Solution { public int myAtoi(String s) { final int len = s.length(); 2024-03-09 Leetcode > Medium #Leetcode #心得 #String
416. Partition Equal Subset Sum - Medium 前往題目 之前的文章 這次看到一樣想不出來,連code都花了一點時間才懂 思路 先知道總和,就可以知道有沒有辦法被分成兩個subset了(因為要能被2整除才能分配成兩個subsets) 目標target直接sum / 2,因為兩個subset總和相等 疊代nums所有的element 每個疊代中都使用新的一個hashset來儲存可能的數值(不然會導致還沒疊代完,dp就會被更新,這樣會更改到同一輪 2024-03-09 Leetcode > Medium #Leetcode #心得 #Array #Dynamic Programming
846. Hand of Straights - Medium 前往題目 想法 用dp? 思路 使用hashmap來儲存每個數字的個數,還有min heap來儲存最小值 循環直到minheap的數字都被取光 每次循環都先把最小的數字當基準點,然後再檢查這個數字的group能不能被建立 能不能被建立需要以下判斷 hashmap中有我們要的數字 取了之後,如果當前數字已經沒得取了,就看是否當前數字跟minheap的數字一樣,不一樣的話就代表沒辦法建立群組,因為 2024-03-08 Leetcode > Medium #Leetcode #心得 #Array #Greedy #Hash Table #Sorting