题解 | #牛群买卖计划#

牛群买卖计划

https://www.nowcoder.com/practice/3e4ae511b4a941b788da5077b08a7d07

  • 题目考察的知识点 : 动态规划
  • 题目解答方法的文字分析:
  1. buy1 表示第一次买入的最低价格,sell1 表示第一次卖出后的最大利润,buy2 表示第二次买入的最低价格(考虑第一次卖出后的利润),sell2 表示第二次卖出后的最大利润(考虑第二次买入后的利润),buy3 表示第三次买入的最低价格(考虑第二次卖出后的利润),sell3 表示第三次卖出后的最大利润(考虑第三次买入后的利润)
  2. 在遍历价格数组时,我们根据当前价格以及之前的卖出情况来更新这些变量。具体而言,在每个价格上:
  3. 我们首先更新 buy1 和 sell1,分别为当前价格和当前价格减去之前的最低价格。
  4. 然后基于上一步的 sell1 来更新 buy2 和 sell2,分别为当前价格减去上一步的 sell1 和当前价格减去之前的最低价格。
  5. 接着基于上一步的 sell2 来更新 buy3 和 sell3,分别为当前价格减去上一步的 sell2 和当前价格减去之前的最低价格。
  6. 最终返回 sell3 作为最大利润。
  • 本题解析所用的编程语言: Python
  • 完整且正确的编程代码

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param prices int整型一维数组
# @return int整型
#
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        buy1 = float("inf")
        sell1 = 0
        buy2 = float("inf")
        sell2 = 0
        buy3 = float("inf")
        sell3 = 0

        for price in prices:
            # 第一次买入的最低价格
            buy1 = min(buy1, price)
            # 第一次卖出后的最大利润
            sell1 = max(sell1, price - buy1)
            # 第二次买入的最低价格,考虑第一次卖出后的利润
            buy2 = min(buy2, price - sell1)
            # 第二次卖出后的最大利润,考虑第二次买入后的利润
            sell2 = max(sell2, price - buy2)
            # 第三次买入的最低价格,考虑第二次卖出后的利润
            buy3 = min(buy3, price - sell2)
            # 第三次卖出后的最大利润,考虑第三次买入后的利润
            sell3 = max(sell3, price - buy3)

        return sell3
牛客高频top202题解系列 文章被收录于专栏

记录刷牛客高频202题的解法思路

全部评论

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗? 那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
ohs的小木屋:比不少实习待遇高了
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

全站热榜

更多

创作者周榜

更多
正在热议
更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务