鱼C论坛

 找回密码
 立即注册
查看: 2474|回复: 0

[学习笔记] Leetcode 123. Best Time to Buy and Sell Stock III

[复制链接]
发表于 2020-9-10 22:48:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Say you have an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete at most two transactions.

Note: You may not engage in multiple transactions at the same time (i.e., you must sell the stock before you buy again).



Example 1:

Input: prices = [3,3,5,0,0,3,1,4]
Output: 6
Explanation: Buy on day 4 (price = 0) and sell on day 6 (price = 3), profit = 3-0 = 3.
Then buy on day 7 (price = 1) and sell on day 8 (price = 4), profit = 4-1 = 3.
Example 2:

Input: prices = [1,2,3,4,5]
Output: 4
Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4.
Note that you cannot buy on day 1, buy on day 2 and sell them later, as you are engaging multiple transactions at the same time. You must sell before buying again.
Example 3:

Input: prices = [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.
Example 4:

Input: prices = [1]
Output: 0


Constraints:

1 <= prices.length <= 10^5
0 <= prices[i] <= 10^5
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        if not prices: return 0
        hold_first, sold_first = -math.inf, 0
        hold_second, sold_second = -math.inf, 0
        
        for price in prices:
            hold_first_tmp, sold_first_tmp = hold_first, sold_first
            hold_second_tmp, sold_second_tmp = hold_second, sold_second
            
            hold_first = max(hold_first_tmp, 0 - price)
            sold_first = max(sold_first_tmp, hold_first_tmp + price)
            hold_second = max(hold_second_tmp, sold_first - price)
            sold_second = max(sold_second_tmp, hold_second_tmp + price)
        
        return sold_second

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 18:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表