「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > LeetCode の解読。株式を売買するのに最適な時期 II

LeetCode の解読。株式を売買するのに最適な時期 II

2024 年 8 月 5 日に公開
ブラウズ:278

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