121. 买卖股票的最佳时机
贪心
贪心的核心思想就是局部最优
1股票买卖就是两种操作不是买入就是卖出 ,但是肯定得先买入才能卖出,套路不能乱。
2理想状态就是低买高卖,在价格最低的时候买入,价格超过了之前的最低购买价就可以卖出了
3遍历当前的价格,对比当前的价格是不是高于之前的最低价 那就局部最优是卖出,否则局部最优买入
4利润最大化就是在适合卖出里最大值就是了
package main
import "fmt"
func maxProfit(prices []int) int {
maxVal := 0
if len(prices) == 0 {
return maxVal
}
minPrice := prices[0]
for i := 1; i < len(prices); i++ {
if minPrice > prices[i] { // 表示当前买入价格最低
minPrice = prices[i]
} else { //表示当前价格适合卖出
v := prices[i] - minPrice
maxVal = max(maxVal, v)
}
}
return maxVal
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func main() {
fmt.Println(maxProfit([]int{7, 1, 5, 3, 6, 4}))
fmt.Println(maxProfit([]int{7, 6, 4, 3, 1}))
fmt.Println(maxProfit([]int{}))
fmt.Println(maxProfit([]int{2, 4, 1}))
}