Написано: 16.03.2023

122. Лучшее время для покупки и продажи акций II (Best Time to Buy and Sell Stock II)

medium

Задание.

Вам предоставляется целочисленный массив prices, где prices[i] – это цена данной акции на i-й день.

В каждый день вы можете принять решение о покупке и/или продаже акций. В любой момент вы можете владеть не более чем одной акцией. Однако вы можете купить его, а затем немедленно продать в тот же день.

Найдите и верните максимальную прибыль, которой вы можете достичь.

Пример 1.

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

Результат: 7

Пояснение: Покупайте в день 2 (цена = 1) и продавайте в день 3 (цена = 5), прибыль = 5-1 = 4. Затем покупайте в день 4 (цена = 3) и продавайте в день 5 (цена = 6), прибыль = 6-3 = 3. Общая прибыль равна 4 + 3 = 7.

Пример 2.

Входные данные: prices = [1,2,3,4,5]

Результат: 4

Пояснение: Покупайте в день 1 (цена = 1) и продавайте в день 5 (цена = 5), прибыль = 5-1 = 4. Общая прибыль составляет 4.

Пример 3.

Входные данные: prices = [7,6,4,3,1]

Результат: 0

Пояснение: Нет никакого способа получить положительную прибыль, поэтому мы никогда не покупаем акции для достижения максимальной прибыли в 0.

Решение.

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int profit = 0, len = prices.size();
        for (int i = 1; i < len; i++) {
            if (prices[i] > prices[i - 1]) {
                profit += prices[i] - prices[i - 1];
            }
        } 
        return profit;
    }
};

Способ решения.