K המספרים הקרובים ביותר

נתון מערך חד-ממדי arr המלא במספרים שלמים (חיוביים, שליליים ואפסים), וממוין בסדר עולה ממש (ללא מספרים שווים).

בהינתן המערך arr ושני מספרים שלמים נוספים num ו-k. k הוא מספר שלם חיובי ממש שערכיו בין 1 ל- 10 (כולל).

יש להדפיס את k המספרים הקרובים ביותר ל-num, אין חשיבות לסדר הדפסת המספרים.

אם המספר num נמצא בעצמו במערך, לא נדפיס אותו.

אם יש פחות מ-k איברים במערך, יודפסו רק האיברים שיש במערך.

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

דוגמה 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 עצמו לא מודפס כי הוא קיים במערך

דוגמה 2:
קלט:
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

דוגמה 3:
קלט:
arr = [-3, 3, 4, 10, 12],
num = 2,
k = 4
פלט:
3 4 -3 10

הסבר: המספרים הקרובים ביותר ל-2 הם 3 (מרחק 1), 4 (מרחק 2), -3 (מרחק 5), 10 (מרחק 8)

דוגמה 4:
קלט:
arr = [-3, 3, 4, 10, 12],
num = 100,
k = 10
פלט:
12 10 4 3 -3

הסבר: k גדול ממספר האלמנטים במערך, לכן מודפסים כל האלמנטים

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

הסבר: המספר 3 קיים במערך ולכן לא מודפס. המספרים הקרובים ביותר הם 2 ו-4

דוגמה 6:
קלט:
arr = [10, 20, 30, 40, 50],
num = 25,
k = 3
פלט:
20 30 10

הסבר: המספרים הקרובים ביותר ל-25 הם 20 (מרחק 5), 30 (מרחק 5), 10 (מרחק 15)

דוגמה 7:
קלט:
arr = [1],
num = 10,
k = 1
פלט:
1

הסבר: יש רק אלמנט אחד במערך

דוגמה 8:
קלט:
arr = [-10, -5, 0, 5, 10, 15, 20],
num = 0,
k = 4
פלט:
-5 5 -10 10

הסבר: המספר 0 קיים במערך ולכן לא מודפס. המספרים הקרובים ביותר הם -5, 5, -10, 10

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

קלט:

arr = [12, 16, 22, 30, 35, 39, 42, 45, 48, 50, 53, 55, 56],
num = 35,
k = 4

הפלט המבוקש:

39 30 42 45