Menu
CoddyTech

Binary Search

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

פונקציה

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

אילוצים

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums ממוינת בסדר עולה ממש, ולכן כל ערך מופיע פעם אחת.

דוגמאות

קלט
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
פלט
4
הסבר
nums[4] הוא 9. החיפוש בודק את האינדקס 3 (הערך 4, קטן מדי), ואז את האינדקס 5 (הערך 15, גדול מדי), ואז את האינדקס 4, שבו הוא מוצא את 9.

lock icon+15 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

אם הערכים ב-nums יכולים לחזור על עצמם, איך תחזיר את האינדקס הראשון של target, ועדיין בזמן O(log n)?

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

מקרה 1

מקרה 2

קלט

nums = [-7, -2, 0, 4, 9, 15, 23]
target = 9

צפוי

4