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

共 1765字,需浏览 4分钟

 ·

2021-07-27 10:50







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

前言

极简Go语言玩算法,旨在用最短的语言描述梗概题目,再用最短的语言讲清题解

70.爬楼梯

题目:一次可以上一阶或者二阶,如果是n阶有多少种爬法 https://leetcode-cn.com/problems/climbing-stairs/

题解:斐波那契数列,返回结果是前两个值的和,只需要保存前两个值和当前结果,递推赋值即可

完整代码:

func climbStairs(n int) int {
 if n<=0{
  return 0
 }
 q,p,res := 0,0,1
 for i:=0;i<n;i++{
  p=q
  q=res
  res = p+q
 }
 return res
}

101.对称二叉树

题目:二叉树是不是镜像的,左右完全对称 https://leetcode-cn.com/problems/symmetric-tree/description/

题解:

  • 递归,相当于使用了前序遍历和后续遍历相等的性质
  • 函数签名isMirror(root,root),判断前序和后续相等
q.Val == p.Val && isMirror(p.Left,q.Right) && isMirror(p.Right,q.Left)
  • 注意都为空时true,其中一个为空时false
if p == nil && q == nil {
    return true
}
if p==nil || q==nil{
    return false
}

完整代码:

func isSymmetric(root *TreeNode) bool {
    return isMirror(root,root)
}

func isMirror(p,q *TreeNode) bool{
    if p == nil && q == nil {
        return true
    }
    if p==nil || q==nil{
        return false
    }
    return q.Val == p.Val && isMirror(p.Left,q.Right) && isMirror(p.Right,q.Left)
}
欢迎评论指正,一经采纳,奖励红包!
内推与面试交流群点此,Go实战交流群直接加微信 qupzhi

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


浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报