public static void Main()
int[] prices = new[] {7,1,5,3,6,4};
int result = MaxProfitBest(prices);
Console.WriteLine(result);
public static int MaxProfit(int[] prices) {
for (int i = 0; i < prices.Length - 1; i++)
if (prices[i] < prices[i + 1])
for (int j = i + 1; j < prices.Length && prices[j] > prices[i]; j++)
if (prices[j] - prices[i] > maxProfit)
maxProfit = prices[j] - prices[i];
public static int MaxProfitBest(int[] prices) {
if(prices == null || prices.Length < 2) return 0;
for(int i = 0; i < prices.Length; i++){
min = Math.Min(min, prices[i]);
res = Math.Max(res, prices[i] - min);