mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
update 0122.买卖股票的最佳时机II:修改 go 代码 和 错字
This commit is contained in:
@ -46,7 +46,7 @@
|
||||
|
||||
### 贪心算法
|
||||
|
||||
这道题目可能我们只会想,选一个低的买入,在选个高的卖,在选一个低的买入.....循环反复。
|
||||
这道题目可能我们只会想,选一个低的买入,再选个高的卖,再选一个低的买入.....循环反复。
|
||||
|
||||
**如果想到其实最终利润是可以分解的,那么本题就很容易了!**
|
||||
|
||||
@ -198,38 +198,40 @@ class Solution:
|
||||
|
||||
### Go:
|
||||
|
||||
```golang
|
||||
//贪心算法
|
||||
贪心算法
|
||||
```go
|
||||
func maxProfit(prices []int) int {
|
||||
var sum int
|
||||
for i := 1; i < len(prices); i++ {
|
||||
// 累加每次大于0的交易
|
||||
if prices[i]-prices[i-1] > 0 {
|
||||
sum += prices[i]-prices[i-1]
|
||||
if prices[i] - prices[i-1] > 0 {
|
||||
sum += prices[i] - prices[i-1]
|
||||
}
|
||||
}
|
||||
return sum
|
||||
}
|
||||
```
|
||||
|
||||
```golang
|
||||
//确定售卖点
|
||||
动态规划
|
||||
```go
|
||||
func maxProfit(prices []int) int {
|
||||
var result,buy int
|
||||
prices=append(prices,0)//在price末尾加个0,防止price一直递增
|
||||
/**
|
||||
思路:检查后一个元素是否大于当前元素,如果小于,则表明这是一个售卖点,当前元素的值减去购买时候的值
|
||||
如果不小于,说明后面有更好的售卖点,
|
||||
**/
|
||||
for i:=0;i<len(prices)-1;i++{
|
||||
if prices[i]>prices[i+1]{
|
||||
result+=prices[i]-prices[buy]
|
||||
buy=i+1
|
||||
}else if prices[buy]>prices[i]{//更改最低购买点
|
||||
buy=i
|
||||
}
|
||||
dp := make([][]int, len(prices))
|
||||
for i := 0; i < len(dp); i++ {
|
||||
dp[i] = make([]int, 2)
|
||||
}
|
||||
return result
|
||||
// dp[i][0]表示在状态i不持有股票的现金,dp[i][1]为持有股票的现金
|
||||
dp[0][0], dp[0][1] = 0, -prices[0]
|
||||
for i := 1; i < len(prices); i++ {
|
||||
dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
|
||||
dp[i][1] = max(dp[i-1][0] - prices[i], dp[i-1][1])
|
||||
}
|
||||
return dp[len(prices)-1][0]
|
||||
|
||||
}
|
||||
func max(a, b int) int {
|
||||
if a > b {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user