UniLecs #Task. Купи-продай
Задача: y вас есть список цен акций за N дней, необходимо определить максимальную прибыль для одной операции покупки и продажи.
Входные данные: arr — массив натуральных чисел, размер массива от 2 до 1⁰⁶.
Вывод: максимальная прибыль за одну транзакцию покупки и продажи.
Пояснение: помните, что вы можете продать акцию только (на след.день) после того как купите ее.
Пример:
1. [9, 6, 13, 10, 20, 2]
MaxProfit (20–6) = 14
2. [20, 11, 10, 8, 5, 2]
MaxProfit (10–11) = -1
Разбор:
Нам необходимо максимизировать прибыль, либо минимизировать убыток (в зависимости от данных). Для линейного решения этой задачи нам необходимо создать несколько счетчиков, в которых мы будем считать текущую цену покупки, продажи, а также прибыли. Также у нас будет глобальная переменная, где будет хранится максимальная прибыль по всему массиву. При обходе массива на каждой итерации мы будем обновлять наши счетчики, а также будем сравнивать с глобальным максимумом и обновлять его при необходимости. Детали алгоритма смотрите в реализации.
Реализация:
Play-test:
https://dotnetfiddle.net/dArSZc