123456789101112131415161718192021222324252627 |
- func maxProfit(prices []int) int {
- // v-.
- // >s0_|rest
- // / \
- // rest/ \ buy
- // / sell v
- // s2<-----s1<.
- // |_|rest
- //
- n := len(prices)
- if n <= 1 {
- return 0
- }
- s0, s1, s2 := 0, -prices[0], -1<<32
- for i := 1; i < n; i++ {
- s0, s1, s2 = maxInt(s0, s2), maxInt(s0-prices[i], s1), s1+prices[i]
- }
- return maxInt(s0, s2)
- }
- func maxInt(x, y int) int {
- if x < y {
- return y
- }
- return x
- }
|