BM81 买卖股票的最好时机(二)
题目描述
假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益
1. 你可以多次买卖该只股票,但是再次购买前必须卖出之前的股票
2. 如果不能获取收益,请返回0
3. 假设买入卖出均无手续费
示例:
输入:
[8,9,2,5,4,7,1]
返回值:
7
说明:
在第1天(股票价格=8)买入,第2天(股票价格=9)卖出,获利9-8=1
在第3天(股票价格=2)买入,第4天(股票价格=5)卖出,获利5-2=3
在第5天(股票价格=4)买入,第6天(股票价格=7)卖出,获利7-4=3
总获利1+3+3=7,返回7
链接: https://www.nowcoder.com/practice/9e5e3c2603064829b0a0bbfca10594e9?tpId=295&tqId=1073471&ru=%2Fpractice%2Fd8b6b4358f774294a89de2a6ac4d9337&qru=%2Fta%2Fformat-top101%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj
解题思路
用贪心算法,只要跌到一个低谷就买,只要涨到一个波峰就卖,即可实现赚得最多差值
解题代码
class Solution:
def maxProfit(self , prices: List[int]) -> int:
res = 0
for i in range(1, len(prices)):
#只要某段在递增就有收益
if prices[i - 1] < prices[i]:
#收益累加
res += prices[i] - prices[i - 1]
return res
文章目录
关闭
共有 0 条评论