题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个一维数组代表股票,另一个数组代表策略和一个数字 k,总之可以选择对策略操作:取其中连续 k 个数字,前半设持有,后半卖出。求最终最大利润。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
class Solution:
def maxProfit(self, prices: List[int], strategy: List[int], k: int) -> int:
n = len(prices)
s = list(accumulate((p*x for p, x in zip(prices, strategy)), initial=0))
num_price = list(accumulate((p for p in prices), initial=0))
ans = max(s[i-k] + s[n] - s[i] + num_price[i] - num_price[i-k//2] for i in range(k, n+1))
return max(ans, s[n])