给你一个整数数组 prices
,其中 prices[i]
表示某支股票第 i
天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
代码:
public class Solution {//贪心算法
public int MaxProfit(int[] prices) {
int max = 0;
for(int i = 1; i < prices.Length; i++){
max += Math.Max(0, prices[i] - prices[i - 1]);
}
return max;
}
}
注:
数组 prices 可分为 n 个长度为 2 的子数组。定义每个子数组的元素差为后一个元素与前一个元素之差,则使利润最大化等价于在所有子数组中选择一个子集使得该子集的元素差之和最大。
对于每个长度为 2 的子数组,当子数组的元素差大于 0 时将元素差加到总利润,否则不更新总利润。如果不使用贪心策略,一定不可能得到更高的总利润。