image.png

解题思路

算法
假设给定的数组为:
[7, 1, 5, 3, 6, 4]
如果我们在图表上绘制给定数组中的数字,我们将会得到:
image.png
使我们感兴趣的点是上图中的峰和谷。我们需要找到最小的谷之后的最大的峰。
我们可以维持两个变量——minprice 和 maxprofit,它们分别对应迄今为止所得到的最小的谷值和最大的利润(卖出价格与最低价格之间的最大差值)。

  1. public class Solution {
  2. public int maxProfit(int prices[]) {
  3. int minprice = Integer.MAX_VALUE;
  4. int maxprofit = 0;
  5. for (int i = 0; i < prices.length; i++) {
  6. if (prices[i] < minprice)
  7. minprice = prices[i];
  8. else if (prices[i] - minprice > maxprofit)
  9. maxprofit = prices[i] - minprice;
  10. }
  11. return maxprofit;
  12. }
  13. }