في سعيي المستمر لصقل مهاراتي في LeetCode، عالجت مشكلة "أفضل وقت لشراء وبيع الأسهم II". هذا التحدي هو متابعة لمشكلة "أفضل وقت لشراء وبيع الأسهم II" الكلاسيكية (LeetCode 121) ولكن مع اختلاف حاسم: *يمكنك تنفيذ معاملات متعددة لتحقيق أقصى قدر من الربح.
*
قبل الغوص في التعليمات البرمجية، وجدت أنه من المفيد للغاية تصور المشكلة على السبورة البيضاء. وقد سمح لي هذا بتقسيم المشكلة إلى خطوات أصغر وأكثر قابلية للإدارة.
نظرًا للمرونة في إجراء معاملات غير محدودة، بدا النهج الجشع واعدًا. الفكرة الأساسية بسيطة: كلما ارتفع سعر السهم مقارنة باليوم السابق، فإننا نعتبر ذلك فرصة ربح محتملة. ومن خلال جمع كل هذه الفروق في الأسعار، فإننا نحسب الحد الأقصى للربح بشكل فعال.
إليك كود بايثون الذي ينفذ هذه الإستراتيجية الجشعة:
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
/** * @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 };
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3