极简Go语言玩算法:hot100-easy高频(三)
前言
极简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)
}
如有收获,点个在看,诚挚感谢

评论
