Valid Anagram
題目:
1
給兩個字串,如果這兩個字串裡面的字母從新組合都相同返回true,不同返回false
解法:
1
判斷兩個數的長度,如果不一樣,回傳false,將第一個字串的所有字母存入hash表出現次數,遍歷第二個字串,如果出現字數次數為0,回傳false,字母出現次數--
code
func isAnagram(s string, t string) bool {
if len(s) != len(t) {
return false
}
tmp := make(map[rune]int)
for _, value := range s {
tmp[value]++
}
for _, value := range t {
if tmp[value] == 0 {
return false
}
tmp[value]--
}
return true
}
Binary Search
題目:
1
有一個數字陣列,找出目標值是否在陣列內,不在回傳-1,在的話回傳key, 空間複雜度O(log n)
解法:
1
使用二分法看中間值跟目標值比大小,目標值大的話,最小值為中間值+1,目標值小的話,最大值為中間值-1,直到找出值,或是跑完陣列
code
func search(nums []int, target int) int {
min, max, mid := 0, len(nums) - 1, 0
for min <= max {
mid = (min + max) / 2
if nums[mid] > target {
max = mid - 1
} else if nums[mid] < target {
min = mid + 1
} else {
return mid
}
}
return -1
}