题目描述:给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
解题思路:可以使用贪心的思想,非常巧妙,非常简单,代码也非常简洁
- 时间复杂度O(n),遍历prices数组,将后一个数减去前一个数,如果结果是正数就加到res中,负数就相当于亏了,不要即可,最后返回res。
代码实现:
public int maxProfit(int[] prices) {
int len = prices.length;
int res = 0;
for (int i = 1; i < len; i++) {
int num = prices[i] - prices[i-1];
if (num > 0){// 贪心算法,每当后一个减前一个是正数就加进去,负数就相当于亏了,不要即可
res += num;
}
}
return res;
}
}