Лучшее время для покупки и продажи стандартных решений на 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.