極簡Go語言玩算法(四):二叉樹最大深度、買賣股票最佳時機(jī)
前言
極簡Go語言玩算法,旨在用最短的語言描述梗概題目,再用最短的語言講清題解

104.二叉樹的最大深度
題目:根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長路徑上的節(jié)點(diǎn)數(shù) https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/description/
題解:遞歸,前序遍歷,返回值為左右節(jié)點(diǎn)最大深度+1,退出條件為null節(jié)點(diǎn)返回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.買賣股票的最佳時機(jī)(高頻)
題目:給定整數(shù)數(shù)組表示每天股票價格,買一次賣一次求最大收益,要求必須先買再賣 https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/description/
題解:與目前最小值做差,得到當(dāng)前最大值,更新最大值,一次循環(huán)。核心代碼如下
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
}
如有收獲,點(diǎn)個在看,誠摯感謝

評論
圖片
表情
