Menu
CoddyTech

Longest Increasing Subsequence

ניתנת לך רשימה של מספרים שלמים nums. תת־רצף משאיר חלק מהאיברים, בסדר המקורי שלהם, ומשמיט את השאר; האיברים שנשארים לא חייבים להיות סמוכים זה לזה. החזר את האורך של תת־הרצף הארוך ביותר שערכיו עולים ממש משמאל לימין. שני ערכים שווים ברצף אינם נחשבים לעלייה.

פונקציה

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

אילוצים

  • 1 ≤ nums.length ≤ 2500
  • -104 ≤ nums[i] ≤ 104

דוגמאות

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

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

challenge icon

שאלת המשך

האם תוכלו להחזיר את אחת מתתי־הסדרות העולות הארוכות ביותר עצמן, ולא רק את אורכן, ועדיין לפעול בזמן O(n log n)?

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

מקרה 1

מקרה 2

מקרה 3

קלט

nums = [3, 1, 8, 2, 5, 9, 4, 7]

צפוי

4