Say you has an array for which the i-th element is the price of a given-stock on day I.
If you were-permitted-to-complete at most one transaction (ie, buy one and sell one share of the stock), design an AL Gorithm to find the maximum profit.
Example 1:
Input: [7, 1, 5, 3, 6, 4]output:5max. difference = 6-1 = 5 (Not 7-1 = 6, as selling-price needs-be-larger than buying price)
Example 2:
Input: [7, 6, 4, 3, 1]output:0in this case, no transaction was done, i.e. Max Profit = 0.
Subscribe to see which companies asked this question
Thinking: Dynamic planning
public class Solution {
public int MaxProfit(int[] prices) {
if (prices.Length == 0)
{
return 0;
}
int low = prices[0];
int max = 0;
int length = prices.Length;
for (int i = 0; i < length; i++)
{
if (prices[i] < low)
{
low = prices[i];
}
else if (prices[i] - low > max)
{
max = prices[i] - low;
}
}
return max;
}
}
From for notes (Wiz)
121. Buy and sell stocks best time to buy and Sell stock