«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Взлом LeetCode. Лучшее время для покупки и продажи акций II

Взлом LeetCode. Лучшее время для покупки и продажи акций II

Опубликовано 5 августа 2024 г.
Просматривать:609

В своем постоянном стремлении отточить свои навыки LeetCode я решил проблему «Лучшее время для покупки и продажи акций II». Эта задача является продолжением классической задачи «Лучшее время для покупки и продажи акций II» (LeetCode 121), но с существенным отличием: *вы можете выполнять несколько транзакций для максимизации прибыли.
*

Визуальный подход

Прежде чем углубиться в код, мне было невероятно полезно визуализировать проблему на доске. Это позволило мне разбить проблему на более мелкие и более выполнимые шаги.

Cracking the LeetCode . Best Time to Buy and Sell Stock II

Жадный подход

Учитывая возможность совершать неограниченное количество транзакций, жадный подход казался многообещающим. Основная идея проста: всякий раз, когда цена акции увеличивается по сравнению с предыдущим днем, мы рассматриваем это как потенциальную возможность получения прибыли. Сложив все эти ценовые разницы, мы фактически рассчитываем максимальную прибыль.

Реализация Python

Вот код Python, реализующий эту жадную стратегию:

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        profit = 0

        for i in range(1, len(prices)):
            if prices[i] > prices[i-1]:
                profit =prices[i] - prices[i-1]

        return profit

Реализация JavaScript

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    var profit = 0;
    for (var i = 1; i  prices[i-1])
    {
        profit  = Number(prices[i] - prices[i-1])
    }
    }

    return profit
};

Временная и пространственная сложность

  • Временная сложность этого подхода равна O(N), где N = длина массива.
  • Пространственная сложность равна N(1), поскольку мы сравниваем на месте.
Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/this-is-learning/cracking-the-leetcode-122-best-time-to-buy-and-sell-stock-ii-17k5?1Если есть какие-либо нарушение, пожалуйста, свяжитесь с [email protected], чтобы удалить
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3