数组golang实现买卖股票最佳时机01算法

题目介绍:给定一个数组 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
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 21分钟前
下一篇 14分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注