题目

解法1
思路:有题目可知,针对每一个price[i],找到对于它来说,右边的最大值price[j],获得max(price[j]-price[i])即可
class Solution:
def maxProfit(self, prices: List[int]) -> int:
min_num = inf
max_num = -1
num = len(prices)
max_list = [0] * num
result = 0
for i in range(num):
j = num - i -1
# print('j', j)
max_num = max(prices[j], max_num)
max_list[j] = max_num
max_price = [max_list[i] - prices[i] for i in range(num)]
result = 0 if max(max_price)<0 else max(max_price)
return result
解法2
换个角度
思路:有题目可知,针对每一个price[i],找到对于它来说,左边的最小值min_num,获得max(price[i]-min_num)即可
cpp
class Solution:
def maxProfit(self, prices: List[int]) -> int:
num = len(prices)
min_num = float('-inf')
result = 0
for i in range(num):
min_num = min(min_num, prices[i])
result = max(prices[i]-min_num, result)
return result