极简Go语言玩算法(四):二叉树最大深度、买卖股票最佳时机
前言
极简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
}
如有收获,点个在看,诚挚感谢
评论