Menu
CoddyTech

Minimum Size Subarray Sum

ניתנים לך מספר שלם חיובי target ומערך nums של מספרים שלמים חיוביים. מצא את תת־המערך הקצר ביותר (רצף של איברים סמוכים) שסכומו לפחות target, והחזר את אורכו. אם אף תת־מערך אינו מגיע ל־target, החזר 0.

פונקציה

minSubArrayLen(target: integer, nums: integer-array) → integer
targetinteger
הסכום שתת־מערך חייב להגיע אליו או לעבור אותו
numsinteger-array
המערך של מספרים שלמים חיוביים
מחזירהinteger
אורך תת-המערך הקצר ביותר שסכומו לפחות target, או 0 אם אין כזה

אילוצים

  • 1 ≤ target ≤ 109
  • 1 ≤ nums.length ≤ 2 × 104
  • 1 ≤ nums[i] ≤ 104

דוגמאות

קלט
target = 15nums = [4, 2, 9, 3, 7, 1, 5]
פלט
3
הסבר
אין שני מספרים סמוכים שסכומם מגיע ל־15: הסכום הגדול ביותר של זוג הוא 9 + 3 = 12. שלושה כן מגיעים: 4 + 2 + 9 = 15 וגם 9 + 3 + 7 = 19, לכן התשובה היא 3.

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

challenge icon

שאלת המשך

איך היית פותר את זה אם nums היה יכול להכיל גם אפסים ומספרים שליליים, כך שחלון ההזזה כבר לא עובד?

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

מקרה 1

מקרה 2

מקרה 3

קלט

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

צפוי

3