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

版权声明:
作者:iLemonRain
链接:http://314401480.xyz/?p=506
来源:柠檬酱的blog
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录