5/30/2014

34. Best Time to Buy and Sell Stock

public class Solution {
    public int maxProfit(int[] prices) {
       
        if (prices.length<2) return 0;
       
        int[] min = new int[prices.length];
        min[0] = prices[0];
        int max = 0;
       
        for (int i=1; i<prices.length; i++) {
            if (prices[i]<min[i-1]) min[i] = prices[i];
            else min[i] = min[i-1];
        }
       
        for (int i=1; i<prices.length; i++) {
            if (max<prices[i]-min[i-1]) max = prices[i] - min[i-1];
        }
       
        return max;
    }
}

1 条评论:

  1. 用一个和prices[]对应的数组记录每天最小的买进价min[]. 再找出最大的prices[i]-min[i].
    O(n) time.

    回复删除