Menu
CoddyTech

Car Fleet

בינונימחסניתמיוןpython iconjava iconcpp iconc iconjs icon+10

מכוניות נוסעות בכביש חד-נתיבי לעבר מייל 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