נתון מערך חד-ממדי arr המלא מספרים שלמים. נגדיר תת-מערך (subarray) כסדרה של תאים רצופים בתוך המערך.
לדוגמה, אם המערך הוא [1, 2, 3, 4] אזי התת-מערכים שלו הם:
[1], [1, 2], [1, 2, 3], [1, 2, 3, 4]
[2], [2, 3], [2, 3, 4]
[3], [3, 4]
[4]
ובסה"כ 10 תת-מערכים (שאינם ריקים).
(כדאי לשים לב לסדר בו כתבנו את התת-מערכים. עשוי לרמוז על דרך הפתרון)
בהינתן מערך חד-ממדי arr המכיל מספרים שלמים (חיוביים שליליים ואפסים) ומספר שלם num.
יש להחזיר כמה תת-מערכים יש למערך arr שכל האיברים שלהם קטנים או שווים ל- num.
השיטה צריכה להיות יעילה ככל הניתן מבחינת סיבוכיות הזמן וגם סיבוכיות המקום צריכה להיות קבועה O(1).
arr = [7, 2, 15, 8, 9, 5, 12, 20, 3], num = 9
10
הסבר: התת-מערכים שכל איבריהם קטנים או שווים ל-9 הם: {5}, {7}, {2}, {2, 7}, {8}, {9}, {9, 8}, {5, 9}, {5, 9, 8}, {3}.
arr = [7, 2, 15, 8, 9, 5, 12, 20, 3], num = 1
0
הסבר: אין במערך אף איבר שקטן או שווה ל-1, ולכן אין אף תת-מערך שמקיים את התנאי.
arr = [1, 2, 3, 4], num = 4
10
הסבר: כל האיברים במערך קטנים או שווים ל-4, לכן כל 10 התת-מערכים האפשריים מקיימים את התנאי.
arr = [5, 1, 3, 2, 7], num = 4
6
הסבר: התת-מערכים שמקיימים את התנאי הם: {1}, {3}, {2}, {2, 3}, {3, 1}, {2, 3, 1}.
arr = [10, 20, 30, 40, 50], num = 25
3
הסבר: התת-מערכים שמקיימים את התנאי הם: {10}, {20}, {20, 10}
arr = [1], num = 1
1
הסבר: התת-מערך שמקיים את התנאי הוא {1}
arr = [5, 2, 7, 3, 6], num = 5
4
הסבר: התת-מערכים שמקיימים את התנאי הם: {5}, {2}, {3}, {2, 5}.
arr = [-1, -2, -3, -4, -5], num = -2
10
הסבר: כל האיברים במערך קטנים או שווים ל-2-, לכן כל 10 התת-מערכים האפשריים מקיימים את התנאי.
קלט:
arr = [7, 2, 15, 8, 9, 5, 12, 20, 3], num = 9
הפלט המבוקש:
10