Menu
CoddyTech

Longest Subarray with Sum K

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

פונקציה

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

אילוצים

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • כל סכומי הקידומות נשארים בין -2 × 108 ל־2 × 108, ולכן מספרים שלמים בני 32 סיביות מספיקים.
  • החזר 0 כאשר אין תת־מערך שסכומו שווה ל־k.

דוגמאות

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

שאלת המשך

איך תמצא את תת־המערך הארוך ביותר שסכומו לכל היותר k, כאשר עדיין מותר לכלול ערכים שליליים?

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

nums = [2, -1, 3, 1, -4, 2, 3]
k = 5

הפלט הצפוי

5