题目描述:
解题思路:
DP动态规划
初始设置:
我们先设定一个很大的数,当作是股票价格最便宜的值min_price。
设定最大收益是max_profit为0
核心思路:
当我在第i时刻去卖股票的时候,一定想的是:我要是在[0, i-1]时刻中,股票价格最小的时候买入就好了!!
实现:
通过一次遍历,如果当前时刻股票价格小于min_price,那么就更新min_price。如果当前时刻股票价格大于min_price,那么我们考虑此刻售出股票,我们的收益是多少。如果大于当前的max_profit,就更新max_profit。
经过一次遍历,即可找出何时售出股票最佳,以及最大利润。
代码:
class Solution:
def maxProfit(self, prices: List[int]) -> int:
min_price = 100000
max_profit = 0
for i in prices:
# 找[0, i-1]时刻的股票最小值
if i < min_price:
min_price = i
# 假设i时刻出售,此刻的利润是多少
# 更新max_profit
elif i - min_price > max_profit:
max_profit = i - min_price
return max_profit