算法问题No.188: Best Time to Buy and Sell Stock IV。
假设您有一个数组,其中第i个元素是第i天给定股票的价格。
设计算法以找到最大利润。您最多可以完成k笔交易。
注意:您不得同时参与多笔交易(即,您必须在再次购买前出售股票)。
以下代码是解决方案:
#!/usr/bin/python
class Solution:
# @param {integer} k
# @param {integer[]} prices
# @return {integer}
def maxProfit(self, k, prices):
size = len(prices)
if k >= size/2:
return self.quickSolve(size, prices)
profit = [ None ]*(2*k+1)
profit[0] = 0
for i in range(size):
for j in range(min(2*k, i+1), 0, -1):
profit[j] = max(profit[j], profit[j-1]+prices[i]*[1, -1][j%2])
return max(profit)
def quickSolve(self, size, prices):
sum = 0
for x in range(size-1):
if prices[x+1] > prices[x]:
sum += prices[x+1]-prices[x]
return sum
如果我在Leetcode上提交它,这个解决方案工作正常。
但是,在我的终端中,它会出现以下错误:
File "best_time_to_buy_and_sell_stock_IV.py", line 26, in maxProfit
profit[j] = max(profit[j], profit[j-1]+prices[i]*[1, -1][j%2])
TypeError: unorderable types: int() > NoneType()
这可能是因为我使用 python3 而 无 无法与 int 进行比较,而 利润 初始化为 无 。
但是为什么它正在进行Leetcode测试呢?如何在python3下使其工作?
谢谢〜