Menu
CoddyTech

Longest Consecutive Sequence

בינוניגיבובpython iconjava iconcpp iconc iconjs icon+10

נתון לך מערך של מספרים שלמים nums בסדר שרירותי. רצף עוקב הוא קבוצת ערכים x, x+1, x+2 וכן הלאה, שכל אחד מהם מופיע במקום כלשהו ב-nums. החזר את האורך של הרצף העוקב הארוך ביותר. ערך שמופיע יותר מפעם אחת נספר פעם אחת.

פונקציה

longestConsecutive(nums: integer-array) → integer
numsinteger-array
המספרים השלמים, בכל סדר, אפשר לחזור עליהם
מחזירהinteger
אורך הרצף הארוך ביותר של ערכים עוקבים שנמצאים ב־nums

אילוצים

  • 1 ≤ nums.length ≤ 104
  • -109 ≤ nums[i] ≤ 109
  • ערכים עשויים לחזור. המיקומים במערך אינם חשובים, רק אילו ערכים קיימים.

דוגמאות

קלט
nums = [40, 4, 39, 1, 3, 2, 41]
פלט
4
הסבר
1, 2, 3 ו־4 נמצאים כולם, רצף של 4, אף שהם מפוזרים לאורך המערך. ברצף השני, מ־39 עד 41, יש רק 3 ערכים.
challenge icon

שאלת המשך

נניח שהערכים מגיעים בזה אחר זה, ואחרי כל ערך עליך לדווח על הרצף הארוך ביותר עד כה. האם תוכל לעדכן את התשובה בזמן ממוצע של O(1) לכל ערך?

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

nums = [40, 4, 39, 1, 3, 2, 41]

הפלט הצפוי

4