Лучшее время для покупки и продажи стандартных решений на Javascript

Постановка задачи. Вам дан массив цен, где prices[i] – это цена данной акции в i день.

Вы хотите максимизировать свою прибыль, выбрав один день для покупки одной акции и выбрав другой день в будущем для продажи этой акции.

Возвратите максимальную прибыль, которую вы можете получить от этой транзакции. Если вы не можете получить прибыль, верните 0.

Вход: цены = [7,1,5,3,6,4], выход = 5

Купите в День 2 (при цене 1) и продайте в День 5 (при цене 6) с прибылью 5.

Решение:

var maxProfit = function(prices) {
 let i=1, max = 0, min = prices[0];
 while(i<prices.length) {
 if(prices[i] < min) min = prices[i];
 else if(prices[i] — min > max) max = prices[i] — min;
 i++;
 }
 return max;
};

Объяснение решения:

Чтобы узнать минимальную и максимальную цену, нам нужно просмотреть каждый элемент. Цена min может быть назначена как цена первого дня в начале алгоритма, а затем постепенно сравнивать цену каждого дня с минимальной ценой.

День может иметь минимальную цену ИЛИ максимальную цену, поэтому, когда цена дня больше, чем последняя минимальная цена, мы всегда можем определить разницу между ценой этого дня и цену min и присвойте ей значение max, если оно больше, чем последнее значение max.