| 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
 
- }
 
 
  |