Solution 1

Java
public int maxProfit(int[] prices) {
    int max = 0, buy = prices[0];
    for (int i=1; i<prices.length; i++) {
        if (prices[i] < buy) {
            buy = prices[i];
        } else {
            max = Math.max(prices[i] - buy, max);
        }
    }
    return max;
}
public int maxProfit2(int[] prices) {
    int max = 0, buy = prices[0];
    for (int price: prices) {
        buy = Math.min(buy, price);
        max = Math.max(price - buy, max);
    }
    return max;
}
Leet Code/java.java · L408–427