LeetCode #188: Best Time to Buy and Sell Stock IV
来源:互联网 发布:linux由sql server吗 编辑:程序博客网 时间:2024/05/16 14:02
Problem Statement
(Source) Say you have an array for which the
Design an algorithm to find the maximum profit. You may complete at most
Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).
Analysis
dp[i][j]
: the maximum profit can be achieved in the previous j
days with at most i
transactions.
- Time Complexity:
O(kn2) - Space Complexity:
O(kn)
Tags: Dynamic Programming
.
Solution
class Solution(object): def maxProfit(self, k, prices): """ :type k: int :type prices: List[int] :rtype: int """ if k <= 0 or (not prices) or len(prices) < 2: return 0 n = len(prices) res = 0 if k >= (n >> 1): # Arbitray transactions allowed in this case. dp = [0 for i in xrange(n + 1)] for i in xrange(2, n + 1): dp[i] = dp[i - 1] j = i - 1 while j > 0 and prices[i-1] > prices[j-1]: dp[i] = max(dp[i], dp[j-1] + prices[i-1] - prices[j-1]) j -= 1 return dp[-1] dp = [[0 for j in xrange(n)] for i in xrange(k + 1)] for i in xrange(1, k + 1): for j in xrange(1, n): dp[i][j] = dp[i][j-1] # Buy at day t and sell at day j. t = j - 1 while t >= 0 and prices[t] < prices[j]: profit = max(prices[j] - prices[t], 0) if t - 1 > 0: profit += dp[i-1][t-1] dp[i][j] = max(dp[i][j], profit) t -= 1 res = max(res, dp[i][j]) return res
0 0
- LeetCode(188) Best Time to Buy and Sell Stock IV
- leetcode 188---Best Time to Buy and Sell Stock IV
- leetcode 188: Best Time to Buy and Sell Stock IV
- 188 Best Time to Buy and Sell Stock IV [Leetcode]
- [LeetCode 188] Best Time to Buy and Sell Stock IV
- LeetCode #188: Best Time to Buy and Sell Stock IV
- LeetCode 188 - Best Time to Buy and Sell Stock IV
- LeetCode 188 Best Time to Buy and Sell Stock IV
- Leetcode 188 Best Time to Buy and Sell Stock IV
- [LeetCode] Best Time to Buy and Sell Stock IV
- leetcode: Best Time to Buy and Sell Stock IV
- Best Time to Buy and Sell Stock IV -- leetcode
- Best Time to Buy and Sell Stock IV--LeetCode
- LeetCode : Best Time to Buy and Sell Stock III & IV
- Best Time to Buy and Sell Stock IV Leetcode Java
- LeetCode: Best Time to Buy and Sell Stock IV
- LeetCode Best Time to Buy and Sell Stock IV
- [leetcode] 188.Best Time to Buy and Sell Stock IV
- Spark Standalone 内部原理(一)
- C#实现气泡
- 一些数列
- 知识图谱和Neo4j图数据库
- jquery+ajax
- LeetCode #188: Best Time to Buy and Sell Stock IV
- GCD/扩展欧几里得
- 方向分割
- 时间、日期格式化技巧
- 摄像机目标渲染纹理targetTexture
- SAX解析XML
- 一致性代码段和非一致性代码段
- 合格程序员应具备的专业技能
- 历史上的重大软件BUG启示录 第4篇---Google的疏忽