Menu
CoddyTech

Car Fleet

تسير السيارات على طريق ذي مسار واحد باتجاه الميل target. تبدأ السيارة i عند الميل position[i] وتسير بسرعة speed[i] ميلًا في الساعة. لا يمكن لأي سيارة تجاوز أخرى: فالسيارة التي تلحق بسيارة أبطأ منها تبقى خلفها مباشرة، ومنذ ذلك الحين تتحرك السيارتان معًا بسرعة السيارة الأبطأ، لتشكّلا أسطولًا.

وتُعد السيارة الواحدة أسطولًا أيضًا، كما أن السيارة التي تصل إلى أسطول عند الوجهة تمامًا تنضم إليه. أعد عدد الأساطيل التي تصل إلى الوجهة.

الدالة

carFleet(target: integer, position: integer-array, speed: integer-array) → integer
targetinteger
الميل الذي تتجه إليه كل سيارة
positioninteger-array
الميل الابتدائي لكل سيارة
speedinteger-array
سرعة كل سيارة، بالأميال في الساعة
تُرجعinteger
عدد الأساطيل التي تصل إلى الوجهة

القيود

  • n == position.length == speed.length
  • 1 ≤ n ≤ 104
  • 1 ≤ target ≤ 106
  • 0 ≤ position[i] < target
  • 1 ≤ speed[i] ≤ 106
  • جميع المواضع مختلفة.

أمثلة

المدخلات
target = 20position = [14, 2, 8, 17, 0]speed = [3, 6, 4, 1, 2]
المخرجات
2
الشرح
تحتاج السيارات الموجودة عند الأميال 17 و14 و8 و2، إذا سارت كل منها بمفردها، إلى 3 و2 و3 و3 ساعات، لذا تلحق السيارة عند الميل 14 بالسيارة عند الميل 17، وتصل السيارتان الأخريان إليهما عند الميل 20. تحتاج السيارة عند الميل 0 إلى 10 ساعات، وتصل بمفردها.
challenge icon

سؤال إضافي

المواضع أعداد صحيحة أصغر من target. هل يمكنك عدّ الأساطيل في زمن O(n + target)، دون استخدام فرز بالمقارنة؟

إعادة ضبط الشيفرة
def carFleet(target, position, speed):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

الوسائط

target = 20
position = [14, 2, 8, 17, 0]
speed = [3, 6, 4, 1, 2]

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

2