נגדיר: הזזה של s צעדים של מערך a היא העתקה של כל איבר באינדקס i לאינדקס s+i. ההזזה היא מעגלית. כלומר, אם המערך הוא בגודל n, וההזזה היא בגודל s, אז האיבר באינדקס n-s עובר לאינדקס 0 וכך הלאה. שימו לב שאף איבר לא "נעלם" בהזזה. הוא פשוט עבר למקום אחר ולא "נדרס".
בהינתן מערך כזה a ומספר sum יש להחזיר true אם קיימים שני מספרים שונים במערך שסכומם הוא sum, ואחרת false.
לדוגמה, המערך a הוא:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| 65 | 70 | -5 | 3 | 48 | 49 | 52 |
אם הפרמטר sum = 44, יוחזר true כיוון ש--5 + 49 = 44
אם הפרמטר sum = 45, יוחזר false כיוון שאין שני מספרים במערך שסכומם 45.
השיטה צריכה להיות יעילה ככל הניתן, גם מבחינת סיבוכיות הזמן וגם מבחינת סיבוכיות המקום.
המערך מלא במספרים שלמים ממוינים בסדר עולה שעבר הזזה כלשהי (אולי בגודל 0)
a = [65, 70, -5, 3, 48, 49, 52], sum = 44
true
הסבר: המספרים -5 ו-49 נותנים סכום של 44
a = [65, 70, -5, 3, 48, 49, 52], sum = 45
false
הסבר: אין שני מספרים במערך שסכומם 45
a = [3, 4, 5, 1, 2], sum = 9
true
הסבר: המספרים 4 ו-5 נותנים סכום של 9
a = [1, 2, 3, 4, 5], sum = 10
false
הסבר: הסכום המקסימלי האפשרי הוא 4+5=9, לכן 10 אינו אפשרי
a = [-10, -5, 0, 5, 10], sum = 0
true
הסבר: המספרים -10 ו-10 נותנים סכום של 0
a = [7, 11, 15, 2], sum = 9
true
הסבר: המספרים 2 ו-7 נותנים סכום של 9
a = [7, 9, 1, 3, 5], sum = 8
true
הסבר: המספרים 1 ו-7 נותנים סכום של 8
a = [1, 2], sum = 4
false
הסבר: הסכום המקסימלי האפשרי הוא 1+2=3, לכן 4 אינו אפשרי
קלט:
a = [65, 70, -5, 3, 48, 49, 52], sum = 44
הפלט המבוקש:
true