题目链接
题目描述
给你一个整数数组 prices
,其中 prices[i]
表示某支股票第 i
天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
题目分析
假设我们在第i
天买入,然后在第j
天卖出,那么获得的利润就是price[j]-price[i]
,还可以写成
p r i c e [ j ] − p r i c e [ i ] = p r i c e [ j ] − p r i c e [ j − 1 ] + p r i c e [ j − 1 ] − p r i c e [ j − 2 ] + . . . + p r i c e [ i + 2 ] − p r i c e [ i + 1 ] + p r i c e [ i + 1 ] − p r i c e [ i ] price[j]-price[i] = price[j]-price[j-1]+price[j-1]-price[j-2]+...+price[i+2]-price[i+1]+price[i+1]-price[i] price[j]−price[i]=price[j]−price[j−1]+price[j−1]−price[j−2]+...+price[i+2]−price[i+1]+price[i+1]−price[i]
这样就变成了第i
天到第j
天每天获得的利润之和。
贪心的思路就在于我们只要每天是正利润的情况。
cpp代码
class Solution {
public:int maxProfit(vector<int>& prices) {int result = 0;for(int i = 1; i < prices.size(); i++) {result += max(prices[i] - prices[i-1], 0);}return result;}
};