Insert Interval 題目: 有一個二維陣列,每個陣列中第一個數代表開始,第二個數代表結束,陣列是順序的,先在需要插入一個陣列,讓此二維陣列一樣維持順序排列 解法: 把陣列分成三段,陣列中結束的數字比插入陣列開始還小,和陣列中開始比插入陣列結束還大,都直接丟入陣列,如果陣列結束大於等於插入開始和陣列開始小於等於插入結束時,開始為兩陣列中開始的最小值,結束為兩陣列中結束的最...
leetCode Day19
Maximum Subarray 題目: 有一個數字陣列,找出此陣列中的子陣列總和最大的值 解法: 跑迴圈,如果前面的總和為負數時,總和為0,從新計算總和,如果總和比最大值還大時,替換最大值 code func maxSubArray(nums []int) int { sum := nums[0]; max := nums[0]; for...
leetCode Day18
Subtree of Another Tree 題目: 給兩個二分樹,其中一個為另一個的子樹,返回true,不是返回false 解法: 每個節點都判斷是否和子樹相同,如果所有節點都不想同,返回false,如果有一個節點相同返回true code /** * Definition for a binary tree node. * type TreeNode struct...
leetCode Day17
Convert Sorted Array to Binary Search Tree 題目: 給一個順序排列的數字陣列,將它轉換成高平衡的二收尋樹 解法: 找出陣列中間值,樹的左節點為中間值往左的陣列,樹的右節點為中間值往右的陣列,迴圈直到陣列跑完 code /** * Definition for a binary tree node. * type TreeNode...
leetCode Day16
Missing Number 題目: 給一組數字陣列,由0至n,找出消失的數字 解法: 算出0至n的總和,跑迴圈總和減去數字,最後的數字,就為答案 code func missingNumber(nums []int) int { sum := (len(nums) + 1) * len(nums) / 2 for _, value := range num...
leetCode Day15
Move Zeroes 題目: 給一個數字陣列,把所有的0移動到陣列最後,不要使用複製原陣列的方法 解法: 跑迴圈,如果字數為0,計算0出現幾次,如果不為0,和前面出現的第一個0換位子 code func moveZeroes(nums []int) { var tmp int zeroCount := 0 for i:=0; i<len(n...
leetCode Day14
Longest Common Prefix 題目: 一個陣列裡面有許多字串,找出這些字串的共同前綴,如果沒有返回空 解法: 先找出最短陣列的長度,跑迴圈判斷每個陣列的字母是否都一樣,把字串串起來,如果不一樣,返回字串 code func longestCommonPrefix(strs []string) string { var result string ...
leetCode Day13
Counting Bits 題目: 給一個正整數,返回從0至n的二進制,1出現的數量 解法: n出現1的數字為n向右移動一格,就會是n/2無條件捨去,然後再被右移移除的那個數是1還是0,就會是n%2,每層的算法就會是f[n / 2] + n % 2 code func countBits(n int) []int { var result []int var...
leetCode Day12
Backspace String Compare 題目: 給兩個字串,如果兩個陣列相等回傳true,'#'為消除前一個字串 解法: code func backspaceCompare(s string, t string) bool { x := len(s) - 1 y := len(t) - 1 count := 0 for tr...
leetCode Day11
Contains Duplicate 題目: 給一個數字陣列,如果任何一個數字出現最少兩次,返回成功,否則返回失敗 解法: 設定一個空陣列arr,將nums的值出現的次數,存入arr中,如果大於等於2,返回成功,否則返回失敗 code func containsDuplicate(nums []int) bool { arr := make(map[int]int)...