Задачи
September 25, 2023
Задача. Размах цены акции
Размах цен акции за один день — это максимальное количество последовательных дней (начиная с этого дня и в обратном направлении), в течение которых цена акции была меньше или равна цене этого дня.
Например, если цены акции за последние четыре дня равны [7,2,1,2], а цена акции сегодня равна 2, то размах сегодняшнего дня равен 4, поскольку, начиная с сегодняшнего дня, цена акции была меньше или равна 2 в течение 4 дней подряд.
Разработайте алгоритм, который собирает ежедневные котировки цен на некоторые акции и возвращает размах цены этой акции за текущий день.
Разбор
Итак, для каждой цены текущего дня нам необходимо проверить предыдущие значения, для такой операции воспользуемся стеком: последний пришел - первый вышел.
- Значением стека будет пара значений: { цена, размах цены }.
- В главном методе, который принимает текущее значение цены акции запускаем цикл по стеку, пока цена элемента стека меньше или равна текущей цене акции.
- Внутри этого цикла будет счетчик, который будет суммировать значение размаха.
- Далее запишем найденное значение размаха для текущего значения стека и вернем это значение.