תת-מערך קטן ביותר עם סכום מוגבל

נתון מערך a המלא במספרים שלמים אי-שליליים. ומספר שלם חיובי k.

יש למצוא את תת-המערך (sub-array) הקטן ביותר שהסכום שלו גדול מהמספר k, ולהחזיר את האורך של תת-המערך הזה. אם אין תת-מערך כזה (כלומר, הסכום של כל איברי המערך עדיין קטן מהמספר k), יוחזר הערך a.length + 1 (אורך המערך ועוד 1).

להזכירכם - בתת-מערך האיברים סמוכים זה לזה (רציפים).

לדוגמה, אם המערך a הוא:

012345
14136019
  • אם k = 22 יוחזר הערך 3 כי תת-המערך הקטן ביותר הוא {4, 13, 6}.
  • אם k = 42 יוחזר הערך 6 כי תת-המערך הקטן ביותר הוא המערך כולו.
  • אם k = 43 יוחזר הערך 7 כי אין תת-מערך שסכום איבריו גדול מ- 43.
  • אם k = 26 יוחזר הערך 4 כי תת-המערך הקטן ביותר הוא {13, 6, 0, 19}.
  • אם k = 2 יוחזר הערך 1 כי הסכום של תת-המערך {4} גדול מ- 2 (וכך גם לגבי תת-מערכים {13} או {6} או {19}).

יש להחזיר את אורך תת-המערך הקטן ביותר ולא את איברי תת-המערך הזה.

השיטה צריכה להיות יעילה ככל הניתן, גם מבחינת סיבוכיות הזמן וגם מבחינת סיבוכיות המקום.

אילוצים:

יש להחזיר את אורך התת-מערך הקטן ביותר ולא את איברי התת-מערך הזה.

דוגמה 1:
קלט:
a = [1, 4, 13, 6, 0, 19],
k = 22
פלט:
3

הסבר: תת-המערך הקטן ביותר שהסכום שלו אינו גדול מ-22 הוא {4, 13, 6}.

דוגמה 2:
קלט:
a = [1, 4, 13, 6, 0, 19],
k = 42
פלט:
6

הסבר: תת-המערך הקטן ביותר שהסכום שלו אינו גדול מ-42 הוא המערך כולו.

דוגמה 3:
קלט:
a = [1, 4, 13, 6, 0, 19],
k = 43
פלט:
7

הסבר: אין תת-מערך שסכום איבריו גדול מ-43, לכן מחזירים a.length + 1.

דוגמה 4:
קלט:
a = [1, 4, 13, 6, 0, 19],
k = 26
פלט:
4

הסבר: תת-המערך הקטן ביותר שהסכום שלו אינו גדול מ-26 הוא {13, 6, 0, 19}.

דוגמה 5:
קלט:
a = [1, 4, 13, 6, 0, 19],
k = 2
פלט:
1

הסבר: הסכום של תת-המערך {4} גדול מ-2.

דוגמה 6:
קלט:
a = [5, 1, 3, 5, 10, 7, 4, 9, 2, 8],
k = 15
פלט:
2

הסבר: תת-המערך הקטן ביותר שהסכום שלו אינו גדול מ-15 הוא {7, 4, 9}.

דוגמה 7:
קלט:
a = [2, 3, 1, 2, 4, 3],
k = 7
פלט:
3

הסבר: תת-המערך הקטן ביותר שהסכום שלו אינו גדול מ-7 הוא {1, 2, 4}.

דוגמה 8:
קלט:
a = [1, 2, 3, 4, 5],
k = 11
פלט:
3

הסבר: תת-המערך הקטן ביותר שהסכום שלו אינו גדול מ-11 הוא {3, 4, 5}.

Loading...
נשמרLn 1, Col 1

קלט:

a = [1, 4, 13, 6, 0, 19],
k = 22

הפלט המבוקש:

3