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;
}