已解答
简单
相关标签
相关企业
给定一个数组 prices
,它的第 i
个元素 prices[i]
表示一支给定股票第 i
天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0
。
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
# 每一天的最好的交易日期prices[f(i)]-preice[i]
# 所以f(i)函数是怎么做的呢,后面的最大的值x
# x> prices[i] 就是可以赚钱的 返回x的日期
# else 返回none就是不能赚钱的,这个就是0
# 把这个max简化一下,保存一个从后往前看的最大值
max_price = []
max_t = -100
t = range(len(prices))
t.reverse()
for i in t:
if prices[i]>max_t:
max_t=prices[i]
max_price.append(max_t)
else:
max_price.append(max_t)
max_price.reverse()
max_prices=0
for index,price in enumerate(prices):
if price < max_price[index]:
if max_price[index] - price > max_prices:
max_prices = max_price[index] - price
return max_prices
这里我们的思路是,要得到哪一天最多的利润,实际上就是对于每一天来说,后面的天数里面的最高价格就是我们要卖的价格,所以我们保存一个变量max_prices保存的就是对于i来说【i:】的里面的最高价格,他最差是i本身。
然后我们对于每个i用后面的最大的价格去减,得到的就是每天的profit,然后从这个profit里面得到一个最大值返回