121. 买卖股票的最佳时机

image.png

贪心

贪心的核心思想就是局部最优

1股票买卖就是两种操作不是买入就是卖出 ,但是肯定得先买入才能卖出,套路不能乱。
2理想状态就是低买高卖,在价格最低的时候买入,价格超过了之前的最低购买价就可以卖出了
3遍历当前的价格,对比当前的价格是不是高于之前的最低价 那就局部最优是卖出,否则局部最优买入
4利润最大化就是在适合卖出里最大值就是了

  1. package main
  2. import "fmt"
  3. func maxProfit(prices []int) int {
  4. maxVal := 0
  5. if len(prices) == 0 {
  6. return maxVal
  7. }
  8. minPrice := prices[0]
  9. for i := 1; i < len(prices); i++ {
  10. if minPrice > prices[i] { // 表示当前买入价格最低
  11. minPrice = prices[i]
  12. } else { //表示当前价格适合卖出
  13. v := prices[i] - minPrice
  14. maxVal = max(maxVal, v)
  15. }
  16. }
  17. return maxVal
  18. }
  19. func max(a, b int) int {
  20. if a > b {
  21. return a
  22. }
  23. return b
  24. }
  25. func main() {
  26. fmt.Println(maxProfit([]int{7, 1, 5, 3, 6, 4}))
  27. fmt.Println(maxProfit([]int{7, 6, 4, 3, 1}))
  28. fmt.Println(maxProfit([]int{}))
  29. fmt.Println(maxProfit([]int{2, 4, 1}))
  30. }