Menu
CoddyTech

Stock Span Problem

تحصل على سعر الإغلاق لسهم في كل يوم: prices[i] هو السعر في اليوم i. امتداد اليوم i هو عدد الأيام المتتالية، المنتهية باليوم i مع احتسابه، التي كان فيها السعر أقل من أو يساوي prices[i].

أعِد امتداد كل يوم، بالترتيب نفسه الوارد في prices. كل امتداد لا يقل عن 1، لأن اليوم يُحتسب دائمًا ضمن امتداده.

الدالة

stockSpan(prices: integer-array) → integer-array
pricesinteger-array
السعر في كل يوم، بالترتيب
تُرجعinteger-array
مدة كل يوم، بالترتيب نفسه

القيود

  • 1 ≤ prices.length ≤ 104
  • 1 ≤ prices[i] ≤ 105
  • يُحتسب اليوم الأسبق ذو السعر نفسه ضمن المدة؛ ولا يوقفها إلا سعر أعلى منه تمامًا.

أمثلة

المدخلات
prices = [31, 27, 14, 21, 30, 18, 40]
المخرجات
[1, 1, 1, 2, 4, 1, 7]
الشرح
اليوم 3 عند 21 يعود إلى ما قبل 14 ويتوقف عند 27: النطاق 2. اليوم 4 عند 30 يتوقف عند 31: النطاق 4. اليوم 6 عند 40 يتجاوز كل الأسعار السابقة ويغطي الأيام السبعة كلها.
challenge icon

سؤال إضافي

تصل الأسعار الآن واحدًا تلو الآخر، وعليك الإبلاغ عن كل فترة بمجرد ورود سعرها. ما النهج الذي يظل صالحًا، وما الذي يحتفظ به بين الاستدعاءات؟

إعادة ضبط الشيفرة
def stockSpan(prices):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

وسيط

prices = [31, 27, 14, 21, 30, 18, 40]

الإخراج المتوقع

[1, 1, 1, 2, 4, 1, 7]