Say you have an array for which the ith element is the price of a given stock on day i.html
If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.數組
這道題至關簡單,感受達不到Medium的難度,只須要遍歷一次數組,用一個變量記錄遍歷過數中的最小值,而後每次計算當前值和這個最小值之間的差值最爲利潤,而後每次選較大的利潤來更新。當遍歷完成後當前利潤即爲所求,代碼以下:post
C++ 解法:url
class Solution { public: int maxProfit(vector<int>& prices) { int res = 0, buy = INT_MAX; for (int price : prices) { buy = min(buy, price); res = max(res, price - buy); } return res; } };
Java 解法:spa
public class Solution { public int maxProfit(int[] prices) { int res = 0, buy = Integer.MAX_VALUE; for (int price : prices) { buy = Math.min(buy, price); res = Math.max(res, price - buy); } return res; } }
相似題目:code
Best Time to Buy and Sell Stock with Cooldownhtm
Best Time to Buy and Sell Stock IVblog
Best Time to Buy and Sell Stock IIIelement
Best Time to Buy and Sell Stock IIget