这题要求的是最多只完成一次交易,所以就回到了最大子数组和的问题上了。将所有的升降列出来,然后1次交易求出最大值。借鉴了别人写的屌屌的代码。代码如下:
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
if len(prices) <= 1:
return 0
list1 = []
for i in range(len(prices) - 1):
list1.append(prices[i + 1] - prices[i])
if len(list1) == 1:
return [list1[0], 0][list1[0] < 0]
for i in range(1, len(list1)):
list1[i] = max(list1[i], list1[i] + list1[i - 1])
return [max(list1), 0][max(list1) < 0]
本文介绍了一种解决股票买卖问题的算法,通过转化成最大子数组和问题来找到最佳买卖时机,实现一次交易的最大利润。文章提供了一个简洁高效的Python实现。
676

被折叠的 条评论
为什么被折叠?



