@@ -317,6 +317,7 @@ class Solution:
317317### Go:
318318
319319``` go
320+ // 版本一
320321func maxProfit (prices []int ) int {
321322 dp := make ([][]int , len (prices))
322323 for i := 0 ; i < len (prices); i++ {
@@ -344,6 +345,58 @@ func max(a, b int) int {
344345}
345346```
346347
348+ ``` go
349+ // 版本二
350+ func maxProfit (prices []int ) int {
351+ if len (prices) == 0 {
352+ return 0
353+ }
354+ dp := make ([]int , 5 )
355+ dp[1 ] = -prices[0 ]
356+ dp[3 ] = -prices[0 ]
357+ for i := 1 ; i < len (prices); i++ {
358+ dp[1 ] = max (dp[1 ], dp[0 ] - prices[i])
359+ dp[2 ] = max (dp[2 ], dp[1 ] + prices[i])
360+ dp[3 ] = max (dp[3 ], dp[2 ] - prices[i])
361+ dp[4 ] = max (dp[4 ], dp[3 ] + prices[i])
362+ }
363+ return dp[4 ]
364+ }
365+
366+ func max (x , y int ) int {
367+ if x > y {
368+ return x
369+ }
370+ return y
371+ }
372+ ```
373+
374+ ``` go
375+ // 版本三
376+ func maxProfit (prices []int ) int {
377+ if len (prices) == 0 {
378+ return 0
379+ }
380+ dp := make ([][5 ]int , len (prices))
381+ dp[0 ][1 ] = -prices[0 ]
382+ dp[0 ][3 ] = -prices[0 ]
383+ for i := 1 ; i < len (prices); i++ {
384+ dp[i][1 ] = max (dp[i-1 ][1 ], 0 - prices[i])
385+ dp[i][2 ] = max (dp[i-1 ][2 ], dp[i-1 ][1 ] + prices[i])
386+ dp[i][3 ] = max (dp[i-1 ][3 ], dp[i-1 ][2 ] - prices[i])
387+ dp[i][4 ] = max (dp[i-1 ][4 ], dp[i-1 ][3 ] + prices[i])
388+ }
389+ return dp[len (prices)-1 ][4 ]
390+ }
391+
392+ func max (x , y int ) int {
393+ if x > y {
394+ return x
395+ }
396+ return y
397+ }
398+ ```
399+
347400### JavaScript:
348401
349402> 版本一:
0 commit comments