题目介绍:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
看了B站博主的卡尔的视频,我感觉很复杂,也不知道如下的实现思路算不算动态规划
完整代码如下:
package main
import (
"fmt"
"math"
"testing"
)
// MaxProfit 计算一次交易能获取的最大利润
func MaxProfit(prices []int) int {
if len(prices) == 0 {
return 0
}
minPrice := math.MaxInt64
maxProfit := 0
for _, price := range prices {
if price < minPrice {
minPrice = price
} else if price-minPrice > maxProfit {
maxProfit = price - minPrice
}
}
return maxProfit
}
func TestGp001(t *testing.T) {
prices := []int{7, 1, 5, 3, 6, 4}
fmt.Println("最大利润:", MaxProfit(prices)) // 输出: 最大利润: 5
}
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/739006
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!