Menu
CoddyTech

Redundant Connection

רשת התחילה כעץ: n צמתים, שממוספרים מ־1 עד n, ומחוברים באמצעות n-1 קשתות לא מכוונות ללא מעגל. לאחר מכן נוספה קשת נוספת בין שני צמתים שלא היו מחוברים ישירות, ולכן הרשימה edges מכילה כעת n קשתות ומעגל אחד בדיוק.

החזר קשת שאפשר להסיר כדי ש־n-1 הקשתות האחרות יהוו שוב עץ. אם כמה קשתות מתאימות, החזר את זו שמופיעה אחרונה ב־edges, בתור הזוג [a, b] בדיוק כפי שהוא כתוב שם.

פונקציה

findRedundantConnection(edges: integer-2d-array) → integer-array
edgesinteger-2d-array
את n הקשתות הלא מכוונות, שכל אחת מהן היא זוג [a, b] של צמתים שממוספרים החל מ־1
מחזירהinteger-array
הקשת במחזור שמופיעה אחרונה ב־edges, כפי שהיא כתובה שם

אילוצים

  • 3 ≤ n ≤ 5000, כאשר n = edges.length
  • edges[i] = [a, b] כאשר 1 ≤ a, b ≤ n וגם a ≠ b
  • אף קשת אינה מופיעה פעמיים, באף אחד מהכיוונים.
  • הקשתות מחברות את כל n הצמתים ומכילות בדיוק מחזור אחד.

דוגמאות

קלט
edges = [[1, 2], [1, 3], [2, 3]]
פלט
[2, 3]
הסבר
שלוש הצלעות יוצרות את המשולש 1, 2, 3, כך שהסרה של כל אחת מהן משאירה עץ. [2, 3] מופיע אחרון ברשימה.
challenge icon

שאלת המשך

אם הקשתות היו מכוונות והגרף המקורי היה עץ מושרש, איזו קשת היית מסיר כשהקשת הנוספת מעניקה לצומת שני הורים?

איפוס הקוד
def findRedundantConnection(edges):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

ארגומנט

edges = [[1, 2], [1, 3], [2, 3]]

הפלט הצפוי

[2, 3]