121. 买卖股票的最佳时机
贪心
贪心的核心思想就是局部最优
1股票买卖就是两种操作不是买入就是卖出 ,但是肯定得先买入才能卖出,套路不能乱。
2理想状态就是低买高卖,在价格最低的时候买入,价格超过了之前的最低购买价就可以卖出了
3遍历当前的价格,对比当前的价格是不是高于之前的最低价 那就局部最优是卖出,否则局部最优买入
4利润最大化就是在适合卖出里最大值就是了
package mainimport "fmt"func maxProfit(prices []int) int {maxVal := 0if 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] - minPricemaxVal = 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}))}
