极简Go语言玩算法:hot100-easy高频(一)
前言
极简Go语言玩算法,旨在用最短的语言描述梗概题目,再用最短的语言讲清题解

1.两数之和(高频)
题目梗概:数据中是否有两个数之和为目标值
题解:遍历数组,用目标值减去当前值,判断HashMap是否有值存在,如果有则创建新数组返回两者,如果没有循环遍历完返回空数组
时间复杂度: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.有效的括号(高频)
题目:存在[]{})(的字符串,判断是否合法
题解: 存储左括号和右括号的映射,用栈统计左括号,出现左括号就入栈,出现右括号就和栈顶在map中映射的右括号比较,如果匹配就出栈,不匹配返回false,最后遍历完栈空为false
注意: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
}
如有收获,点个在看,诚挚感谢

评论
