Middle of the Linked List 題目: 給一個連結串,找出中間的節點,如果中間節點有兩個的話,返回第二個節點 解法: 使用龜兔賽跑方式,fast走兩步,slow走一步,當fast走到終點時,slow剛好走到中間,返回slow code /** * Definition for singly-linked list. * type ListNode s...
leetCode Day9
Add Binary 題目: 給兩個由0和1組成的字串,求這兩字串二進制相加為多少 解法: 兩字串算出長度,長度-1就會為個位數,兩字串個位數相加為總和,總和%2為字串結果,總和/2代表進位,持續執行,直到跑完兩字串 code func addBinary(a string, b string) string { var result string var ...
leetCode Day8
Reverse Linked List 題目: 反轉鏈表 解法: code /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func reverseList(head *ListNode) *List...
leetCode Day7
Implement Queue using Stacks 題目: 使用兩個堆棧實現先進先出的佇列 解法: 因為是先進先出,所以定義了正反兩個陣列,在push的時候,如果反陣列為空,就把值丟進正陣列,如果反陣列不為空,先將反陣列反向丟回正陣列,在pop的時候,如果正陣列不為空,先將正陣列反向丟到反陣列中,取出反陣列中最後一個數字,在peek的時候,如果反陣列為空,輸出正陣列的第一個數...
leetCode Day6
Lowest Common Ancestor of a Binary Search Tree 題目: 給一個二搜尋樹,給兩個此樹的不相同節點,找出最低共同祖先的節點 解法: code /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left ...
leetCode Day5
Flood Fill 題目: 給一個二維陣列,每個欄位都有顏色,給一個座標需染成目標色,如果鄰近的座標顏色都相同的話,會一起被染成目標色 解法: code func floodFill(image [][]int, sr int, sc int, color int) [][]int { if image[sr][sc] == color { retur...
leetCode Day4
Valid Anagram 題目: 給兩個字串,如果這兩個字串裡面的字母從新組合都相同返回true,不同返回false 解法: 判斷兩個數的長度,如果不一樣,回傳false,將第一個字串的所有字母存入hash表出現次數,遍歷第二個字串,如果出現字數次數為0,回傳false,字母出現次數-- code func isAnagram(s string, t string) bo...
leetCode Day3
Valid Palindrome 題目: 有一個字串把所有字母轉成小寫,並忽略其他符號,只留字母和數字,由前往後讀和由後往前讀都相同,返回true,不相同返回false 解法: 先把字串改成小寫,跑迴圈從前面跟後面的值去做比對,如果值不是字母或數字就跳過這個值,最後都相同返回true,不相同返回false code func isPalindrome(s string) b...
leetCode Day2
Merge Two Sorted Lists 題目: 擁有兩個順序的列表,將兩個列表合併成一個順序的列表 解法: code /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func mergeTwoL...
leetCode Day1
Two Sum 題目: 給一組數字陣列和一個數字target,找出陣列中兩數相加等於target的位置 解法: 建立一個hash表, 跑陣列將陣列的key和value互換存入hash表, 如果target - value有在hash表存在,代表找到結果為key和hash表中target - value的值 code func twoSum(nums []int, targe...