1669. Merge In Between Linked Lists - Medium 前往題目 想法 簡單的拆開後連接 思路 找到第一個斷點,以及第二個斷點 把兩個斷點接上list2的頭和尾 Codeclass Solution { public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) { ListNode breakPointFro 2024-10-03 Leetcode > Medium #Leetcode #心得 #Linked List
2130. Maximum Twin Sum of a Linked List - Medium 前往題目 想法 儲存到arraylist後就可以一組一組看,不過會需要O(n)空間 思路 把list分一半 把後半的指針全部反轉 計算所有組的總和取最大 Code網友解答 class Solution { public int pairSum(ListNode head) { ListNode slow = head; ListNo 2024-10-02 Leetcode > Medium #Leetcode #心得 #Stack #Two Pointers #Linked List
707. Design Linked List - Medium 前往題目 思路這題就是實作linkedList,簡單但細節很多,很容易出錯 Codeclass MyLinkedList { private class Node { Node next; int val; public Node(int val) { this.next = null 2024-10-01 Leetcode > Medium #Leetcode #心得 #Linked List #Design
622. Design Circular Queue - Medium 前往題目 想法 自創node組成linkedlist 思路enQueue: 檢查是否已滿,未滿時可以加入新的node,如果是唯一一個,頭尾都是相同的node **deQueue**: 如果為空就false,否則彈出head`,並且大小減一 Code網友解答 class MyCircularQueue { int size; int maxSize; 2024-09-30 Leetcode > Medium #Leetcode #心得 #Array #Queue #Linked List #Design
1472. Design Browser History - Medium 前往題目 想法 Double linkedlist 思路簡單的一道題,但要細心 自己寫一個class,可以儲存上一個和下一個node藉此組成有雙向連接的list visit: 在尾巴加一個新的node back: 往後直到步數為零或是到頭了 forward: 往前直到步數為零或是到底了 Codeclass BrowserHistory { private class 2024-09-29 Leetcode > Medium #Leetcode #心得 #Stack #Array #Linked List #Design #Data Stream #Doubly-Linked List
160. Intersection of Two Linked Lists - Easy 前往題目 想法 Hashset Two pointers 思路 兩個指針,分別給a和b 循環直到這兩個指針指向同一個元素 每次循環都檢查是否指到null,是的話就代表這個list比較短,所以該指針移到另一個list的開頭(如此一來就可以完美解決兩個list長度不一的問題,因為短的會多走一點路等長的追上來) Code網友解答(內含圖解) public class Solution { 2024-09-27 Leetcode > Easy #Leetcode #心得 #Two Pointers #Hash Table #Linked List
367. Valid Perfect Square - Easy 前往題目 想法 經典的Binary Search 思路 經典Binary Search Codeclass Solution { public boolean isPerfectSquare(int num) { int l = 1, r = num; while (l <= r) { in 2024-09-27 Leetcode > Easy #Leetcode #心得 #Math #Binary Search
2300. Successful Pairs of Spells and Potions - Medium 前往題目 想法 暴力解很直觀 可以先排序,這樣就可以用Binary Search找那個最弱的藥水 思路 排序藥水,從大到小 一個咒語一個咒語循環 每個咒語都用二元搜尋去找第一個success的藥水,找到就可以知道總共有幾個藥水可以成功 每個咒語都檢查過就可以得到答案 Code網友解答 class Solution { public int[] successfulPairs 2024-09-25 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Sorting #Binary Search
977. Squares of a Sorted Array - Easy 前往題目 想法 暴力解也只要n + nlognhe 思路 雙指針,從大排到小,因為這樣左右指針可以在最左和最右 Code class Solution { public int[] sortedSquares(int[] nums) { int[] res = new int[nums.length]; int 2024-09-25 Leetcode > Easy #Leetcode #心得 #Array #Two Pointers #Sorting
69. Sqrt(x) - Easy 前往題目 想法 Binary Search 思路 在0~x之間搜尋 如果當前位置平方小於x那就往右繼續找 如果大於,就往左邊(更小的數字)找 最後收斂的位置左邊就是答案,因為無條件捨去小數 Codeclass Solution { public int mySqrt(int x) { if (x == 0) return 0; if 2024-09-24 Leetcode > Easy #Leetcode #心得 #Math #Binary Search