极简Go语言玩算法:hot100-easy高频(一)

共 1601字,需浏览 4分钟

 ·

2021-07-27 10:51







点击上方“程序员小熊”关注,真爱加个星标

前言

极简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
}
欢迎评论指正,一经采纳,奖励红包!
内推与面试交流群点此,Go实战交流群直接加微信 qupzhi

如有收获,点个在看,诚挚感谢


浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报