极简Go语言玩算法(四):二叉树最大深度、买卖股票最佳时机

共 1730字,需浏览 4分钟

 ·

2021-07-27 10:50

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

前言

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

104.二叉树的最大深度

题目:根节点到最远叶子节点的最长路径上的节点数 https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/description/

题解:递归,前序遍历,返回值为左右节点最大深度+1,退出条件为null节点返回0,左右子树都为空返回1

完整代码

func maxDepth(root *TreeNode) int {
 if root == nil{
  return 0
 }
 if root.Left == nil && root.Right == nil{
  return 1
 }
 leftCnt := maxDepth(root.Left)
 rightCnt := maxDepth(root.Right)
 if leftCnt > rightCnt{
  return leftCnt + 1
 }else{
  return rightCnt + 1
 }
}

121.买卖股票的最佳时机(高频)

题目:给定整数数组表示每天股票价格,买一次卖一次求最大收益,要求必须先买再卖 https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/description/

题解:与目前最小值做差,得到当前最大值,更新最大值,一次循环。核心代码如下

if v<minNum{
    minNum = v
}else if v - minNum > maxNum{
    maxNum = v - minNum
}

完整代码

func maxProfit(prices []int) int {
 const INT_MAX = int(^uint(0) >> 1)
 minNum,maxNum := INT_MAX,0
 for _,v := range prices{
  if v<minNum{
   minNum = v
  }else if v - minNum > maxNum{
   maxNum = v - minNum
  }
 }
 return maxNum
}
欢迎评论指正,一经采纳,奖励红包!
内推与面试交流群点此,Go实战交流群直接加微信 qupzhi

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

浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报