Задачи
September 25, 2023

Задача. Размах цены акции

Размах цен акции за один день — это максимальное количество последовательных дней (начиная с этого дня и в обратном направлении), в течение которых цена акции была меньше или равна цене этого дня.

Например, если цены акции за последние четыре дня равны [7,2,1,2], а цена акции сегодня равна 2, то размах сегодняшнего дня равен 4, поскольку, начиная с сегодняшнего дня, цена акции была меньше или равна 2 в течение 4 дней подряд.

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

Разбор

Итак, для каждой цены текущего дня нам необходимо проверить предыдущие значения, для такой операции воспользуемся стеком: последний пришел - первый вышел.

  • Значением стека будет пара значений: { цена, размах цены }.
  • В главном методе, который принимает текущее значение цены акции запускаем цикл по стеку, пока цена элемента стека меньше или равна текущей цене акции.
  • Внутри этого цикла будет счетчик, который будет суммировать значение размаха.
  • Далее запишем найденное значение размаха для текущего значения стека и вернем это значение.

Реализация

Play-test

https://dotnetfiddle.net/8kOFOK