Menu
CoddyTech

Merge Two Sorted Lists

נתונות לך שתי רשימות מקושרות חד־כיווניות, שכל אחת מהן שמורה בשני מערכים בעלי אותו אורך. ברשימה הראשונה, הצומת i מכיל את הערך values1[i] ומקושר לצומת next1[i]. הרשימה השנייה פועלת באותו אופן, עם next2 ו-values2. בשתי הרשימות -1 מסמן את סוף הרשימה, והראש הוא הצומת 0. הצמתים אינם שמורים לפי סדר הרשימה, לכן יש לעקוב אחר הקישורים.

כל רשימה ממוינת בסדר לא יורד לאורך הקישורים שלה. מזגו את השתיים לרשימה ממוינת אחת והחזירו את הערכים שלה לפי הסדר.

פונקציה

mergeTwoLists(next1: integer-array, values1: integer-array, next2: integer-array, values2: integer-array) → integer-array
next1integer-array
האינדקס של הצומת שאליו מקושר כל צומת ברשימה הראשונה, או ‎-1‎ עבור הצומת האחרון שלה
values1integer-array
הערך שמחזיקה כל צומת ברשימה הראשונה
next2integer-array
האינדקס של הצומת שאליו מקושר כל צומת ברשימה השנייה, או ‎-1 עבור הצומת האחרון שלה
values2integer-array
הערך שמוחזק בכל צומת ברשימה השנייה
מחזירהinteger-array
הערכים של הרשימה הממוזגת, לפי הסדר

אילוצים

  • 1 ≤ L1 ≤ 2000, כאשר L1 הוא האורך של next1 ושל values1.
  • 1 ≤ L2 ≤ 2000, כאשר L2 הוא האורך של next2 ושל values2.
  • -1000 ≤ values1[i], values2[j] ≤ 1000
  • כל איבר ב־next1 הוא -1 או אינדקס של צומת ברשימה הראשונה, וכל איבר ב־next2 הוא -1 או אינדקס של צומת ברשימה השנייה.
  • החל מהצומת 0, כל אחת מהרשימות מבקרת בכל אחד מהצמתים שלה בדיוק פעם אחת ואז מגיעה ל־-1. אין מחזור.
  • לאורך הקישורים שלה, כל רשימה ממוינת בסדר שאינו יורד.

דוגמאות

קלט
next1 = [2, -1, 1]values1 = [1, 6, 4]next2 = [3, 2, -1, 1]values2 = [2, 7, 9, 3]
פלט
[1, 2, 3, 4, 6, 7, 9]
הסבר
במעקב אחר הקישורים, הרשימה הראשונה מבקרת בצמתים 0, 2, 1 וקוראת את 1, 4, 6; השנייה קוראת את 2, 3, 7, 9. בחירה בכל פעם בערך הקטן יותר מבין האיברים הראשונים נותנת את 1, 2, 3, 4, 6, 7, 9.
challenge icon

שאלת המשך

האם תוכל למזג k רשימות ממוינות בזמן O(N log k), כאשר N הוא המספר הכולל של הצמתים?

איפוס הקוד
def mergeTwoLists(next1, values1, next2, values2):
    # כתבו כאן קוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

next1 = [2, -1, 1]
values1 = [1, 6, 4]
next2 = [3, 2, -1, 1]
values2 = [2, 7, 9, 3]

הפלט הצפוי

[1, 2, 3, 4, 6, 7, 9]