Menu
CoddyTech

Redundant Connection

Mạng ban đầu có dạng cây: gồm n nút, được đánh số từ 1 đến n, nối với nhau bằng n-1 cạnh vô hướng và không có chu trình. Sau đó, một cạnh nữa được thêm vào giữa hai nút chưa được nối trực tiếp với nhau, nên danh sách edges hiện có n cạnh và đúng một chu trình.

Hãy trả về một cạnh mà bạn có thể xóa để n-1 cạnh còn lại lại tạo thành một cây. Nếu có nhiều cạnh phù hợp, hãy trả về cạnh xuất hiện cuối cùng trong edges, dưới dạng cặp [a, b] chính xác như được ghi ở đó.

Hàm

findRedundantConnection(edges: integer-2d-array) → integer-array
edgesinteger-2d-array
n cạnh vô hướng, mỗi cạnh là một cặp [a, b] gồm các nút được đánh số từ 1
Trả vềinteger-array
cạnh chu trình xuất hiện cuối cùng trong danh sách edges, được viết đúng như trong đó

Ràng buộc

  • 3 ≤ n ≤ 5000, trong đó n = edges.length
  • edges[i] = [a, b] với 1 ≤ a, b ≤ n và a ≠ b
  • Không có cạnh nào xuất hiện hai lần, dù theo chiều nào.
  • Các cạnh nối tất cả n nút và tạo thành đúng một chu trình.

Ví dụ

Đầu vào
edges = [[1, 2], [1, 3], [2, 3]]
Đầu ra
[2, 3]
Giải thích
Ba cạnh tạo thành tam giác 1, 2, 3, vì vậy xóa bất kỳ cạnh nào cũng để lại một cây. [2, 3] đứng cuối danh sách.
challenge icon

Câu hỏi mở rộng

Nếu các cạnh có hướng và đồ thị ban đầu là một cây có gốc, bạn sẽ xóa cạnh nào khi cạnh thừa khiến một nút có hai nút cha?

Đặt lại code
def findRedundantConnection(edges):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Đối số

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

Đầu ra mong đợi

[2, 3]