Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

מקבלים רשימה של מספרים שלמים nums הממוינת בסדר לא יורד, כך שערך יכול להופיע יותר מפעם אחת, ומספר שלם target. החזירו רשימה של שני אינדקסים, כאשר הספירה מתחילה מ־0: המיקום הראשון והאחרון שבהם target מופיע. אם target לא נמצא ברשימה, החזירו [-1, -1]. שאפו לזמן ריצה של O(log n).

פונקציה

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
הרשימה הממוינת של מספרים שלמים, שבה עשויים להופיע ערכים חוזרים
targetinteger
הערך שיש לחפש
מחזירהinteger-array
האינדקס הראשון והאחרון של target, או [-1, -1] אם הוא חסר

אילוצים

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums מסודר בסדר לא יורד.

דוגמאות

קלט
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
פלט
[1, 3]
הסבר
שלושת העותקים של 5 נמצאים באינדקסים 1, 2 ו־3, לכן הרצף מתחיל ב־1 ומסתיים ב־3. באינדקס 0 נמצא 3 ובאינדקס 4 נמצא 8, לכן הרצף אינו יכול להימשך מעבר לכך.
challenge icon

שאלת המשך

אם אותה רשימה מקבלת אלפי שאילתות עבור יעדים שונים, האם מעבר אחד עליה מראש יכול להפוך כל שאילתה למהירה יותר מ־O(log n)?

איפוס הקוד
def searchRange(nums, target):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

ארגומנטים

nums = [3, 5, 5, 5, 8, 9, 9, 12]
target = 5

הפלט הצפוי

[1, 3]