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
424. Longest Repeating Character Replacement - Medium 前往題目 思路關鍵是window長度減掉該window下最多字母的數量,剩下的字母就是必須替換的,所以最多只能k個 Sliding window,檢查每個字母,紀錄出現次數 當window的長度減掉最多count的字母,大於k的時候就超出規範了,因此要移動左指針 每次循環都更新一次最大長度,也就是window的長度 Code class Solution { public 2023-12-24 Leetcode > Medium #Leetcode #心得 #String #Hash Table #Sliding Window
658. Find K Closest Elements - Medium 前往題目 想法 因為是sorted,所以應該可以用binary search快速定位 思路這題有sliding window和結合了binary search的sliding window兩種解法,但我在評論區看到的binary search解法,無法理解其中一兩行code,所以選擇sliding window 左右兩個指針,頭與尾 每次計算左邊以及右邊到x的距離 相等或右邊比較大的時候就往 2023-12-23 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Binary Search #Sliding Window
662. Maximum Width of Binary Tree - Medium 前往題目 思路 每個node都記錄其數字,左node都是parent的兩倍,右node都是parent的兩倍再加1 利用BFS疊代所有node 每層疊代完之後利用最邊的數字與最右邊的數字相減+1就是該層的寬度,檢查完每層之後就是答案 Code Java版本 class Solution { public int widthOfBinaryTree(TreeNode root 2023-12-23 Leetcode > Medium #Leetcode #心得 #Binary Tree #Tree #Breadth-First Search
525. Contiguous Array - Medium 前往題目 想法 沒什麼想法,看到subarray想到會不會是用sliding window,但貌似不是 思路 遇到0就-1,遇到1就+1,記錄每個index的sum 疊代的期間,遇到出現過的sum就更新最大subarray長度 簡單來說就是遇到同樣的sum的時候那兩個相同sum的index之間的0和1的數量一定是一樣的,可以參考以下影片所畫的圖 另外影片中分成0和其他總和來討論,但我覺得情況 2023-12-22 Leetcode > Medium #Leetcode #心得 #Array #Hash Table
394. Decode String - Medium 前往題目 想法 看到括號第一直覺是用stack 可能可以用兩個stack,一個存數字,一個存符號 思路這道題看了解答還是花了我兩小時左右,都在處理資料,而不是邏輯😂Java處理資料之間的轉換真的是麻煩 遇到右括號以外的符號或數字的時候直接push到stack裡面就好 遇到右括號就把[]裡的字符都存起來,然後再把數字k也存起來 把字符複製k次存進結果 繼續疊代直到把每個字符都檢查完 Cod 2023-12-20 Leetcode > Medium #Leetcode #心得 #Stack #String
328. Odd Even Linked List - Medium 前往題目 想法 這題要求把linkedlist,重新排成奇數項node在前,偶數項node在後,同時維持他們的相對順序 思路 odd和even指針分別指著奇數項和偶數項 藉由觀察可以看到odd的下一項一定是even指針的下一項,而even的下一項一定是even的下下項 拼接後再移動指針 最後odd拼上even WA的code不難,但是指針操作還是有點問題 class Solution 2023-12-19 Leetcode > Medium #Leetcode #心得 #Linked List
189. Rotate Array - Medium 前往題目 想法 這題以前做過,有個想法很簡單而且還是in-place但是想不起來 思路看了一下以前的submission,恍然大悟,就是先全部反轉,然後反轉左半部,再反轉右半部 Codeclass Solution { public void rotate(int[] nums, int k) { k %= nums.length; 2023-12-19 Leetcode > Medium #Leetcode #心得 #Array #Math #Two Pointers
128. Longest Consecutive Sequence - Medium 前往題目 想法 沒什麼頭緒,用tree好像也怪怪的,因為沒辦法馬上判斷是否連貫 題目看起來很簡單,所以應該有一個很好用的演算法 思路這題的關鍵: 使用Set 把array轉換成set 尋找sequence的開頭(也就是左邊沒有相鄰的數字,例如2如果是開頭,那set中絕對不會有1) 找到開頭後,+1+1的找該sequence有多長 Code class Solution { 2023-12-18 Leetcode > Medium #Leetcode #心得 #Array #Hash Table