נתון מערך חד-ממדי arr המלא במספרים שלמים (חיוביים, שליליים ואפסים), וממוין בסדר עולה ממש (ללא מספרים שווים).
בהינתן המערך arr ושני מספרים שלמים נוספים num ו-k. k הוא מספר שלם חיובי ממש שערכיו בין 1 ל- 10 (כולל).
יש להדפיס את k המספרים הקרובים ביותר ל-num, אין חשיבות לסדר הדפסת המספרים.
אם המספר num נמצא בעצמו במערך, לא נדפיס אותו.
אם יש פחות מ-k איברים במערך, יודפסו רק האיברים שיש במערך.
השיטה צריכה להיות יעילה ככל הניתן, גם מבחינת סיבוכיות הזמן וגם סיבוכיות המקום צריכה להיות קבועה כלומר O(1).
arr = [12, 16, 22, 30, 35, 39, 42, 45, 48, 50, 53, 55, 56], num = 35, k = 4
39 30 42 45
הסבר: המספרים הקרובים ביותר ל-35 הם 30, 39, 42, 45. המספר 35 עצמו לא מודפס כי הוא קיים במערך
arr = [12, 16, 22, 30, 35, 39, 42, 45, 48, 50, 53, 55, 56], num = 100, k = 3
56 55 53
הסבר: המספרים הקרובים ביותר ל-100 הם האלמנטים הגדולים ביותר במערך: 56, 55, 53
arr = [-3, 3, 4, 10, 12], num = 2, k = 4
3 4 -3 10
הסבר: המספרים הקרובים ביותר ל-2 הם 3 (מרחק 1), 4 (מרחק 2), -3 (מרחק 5), 10 (מרחק 8)
arr = [-3, 3, 4, 10, 12], num = 100, k = 10
12 10 4 3 -3
הסבר: k גדול ממספר האלמנטים במערך, לכן מודפסים כל האלמנטים
arr = [1, 2, 3, 4, 5], num = 3, k = 2
2 4
הסבר: המספר 3 קיים במערך ולכן לא מודפס. המספרים הקרובים ביותר הם 2 ו-4
arr = [10, 20, 30, 40, 50], num = 25, k = 3
20 30 10
הסבר: המספרים הקרובים ביותר ל-25 הם 20 (מרחק 5), 30 (מרחק 5), 10 (מרחק 15)
arr = [1], num = 10, k = 1
1
הסבר: יש רק אלמנט אחד במערך
arr = [-10, -5, 0, 5, 10, 15, 20], num = 0, k = 4
-5 5 -10 10
הסבר: המספר 0 קיים במערך ולכן לא מודפס. המספרים הקרובים ביותר הם -5, 5, -10, 10
קלט:
arr = [12, 16, 22, 30, 35, 39, 42, 45, 48, 50, 53, 55, 56], num = 35, k = 4
הפלט המבוקש:
39 30 42 45