题目描述
给你一个整数数组 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;
}
};