極簡Go語言玩算法:hot100-easy高頻(一)
前言
極簡Go語言玩算法,旨在用最短的語言描述梗概題目,再用最短的語言講清題解

1.兩數(shù)之和(高頻)
題目梗概:數(shù)據(jù)中是否有兩個數(shù)之和為目標值
題解:遍歷數(shù)組,用目標值減去當(dāng)前值,判斷HashMap是否有值存在,如果有則創(chuàng)建新數(shù)組返回兩者,如果沒有循環(huán)遍歷完返回空數(shù)組
時間復(fù)雜度:O(1) 代碼:
func twoSum(nums []int, target int) []int {
queryMap := make(map[int]int)
for k,v := range nums {
otherNum := target - v
if oldIndex,ok := queryMap[otherNum]; ok {
return []int{oldIndex,k}
}
queryMap[v] = k
}
return nums
}
20.有效的括號(高頻)
題目:存在[]{})(的字符串,判斷是否合法
題解: 存儲左括號和右括號的映射,用棧統(tǒng)計左括號,出現(xiàn)左括號就入棧,出現(xiàn)右括號就和棧頂在map中映射的右括號比較,如果匹配就出棧,不匹配返回false,最后遍歷完??諡閒alse
注意:go語言可以用byte代表單個字符
代碼:
func isValid(s string) bool {
var stack []byte
queryMap := map[byte]byte{'{':'}','[':']','(':')'}
for i := range s{
if _,ok := queryMap[s[i]];ok{
stack = append(stack,s[i])
}else{
n := len(stack)
if n>0 && queryMap[stack[len(stack)-1]] == s[i]{
stack = stack[:n-1]
}else{
return false
}
}
}
return len(stack) == 0
}
如有收獲,點個在看,誠摯感謝

評論
圖片
表情
