Menu
CoddyTech

Reverse Linked List

Bạn nhận được một danh sách liên kết đơn được lưu trong mảng next: nút i liên kết đến nút next[i], -1 đánh dấu điểm kết thúc danh sách và nút đầu là nút 0. Các nút không được lưu theo thứ tự trong danh sách, vì vậy hãy lần theo các liên kết.

Đảo ngược danh sách bằng cách đảo chiều từng liên kết, để nút cuối cũ trở thành nút đầu và nút 0 trở thành nút cuối, liên kết đến -1. Trả về mảng next đã cập nhật, có cùng độ dài với mảng đầu vào.

Hàm

reverseList(next: integer-array) → integer-array
nextinteger-array
chỉ số của nút mà mỗi nút liên kết tới, hoặc -1 đối với nút cuối cùng
Trả vềinteger-array
mảng tiếp theo của danh sách đã đảo ngược

Ràng buộc

  • 1 ≤ next.length ≤ 5000
  • Mỗi next[i] là -1 hoặc chỉ số nút từ 0 đến next.length-1.
  • Bắt đầu từ nút 0, danh sách đi qua mỗi nút đúng một lần rồi đến -1. Không có chu trình.

Ví dụ

Đầu vào
next = [1, 2, 3, -1]
Đầu ra
[-1, 0, 1, 2]
Giải thích
Khi đảo ngược, 0 → 1 → 2 → 3 trở thành 3 → 2 → 1 → 0: mỗi nút liên kết với nút đứng trước nó, và nút 0 liên kết với -1.
challenge icon

Câu hỏi mở rộng

Bạn có thể đảo ngược chỉ phần danh sách nằm giữa vị trí left và vị trí right, đồng thời giữ nguyên vị trí của các nút nằm trước và sau phần đó không?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

next = [1, 2, 3, -1]

Đầu ra mong đợi

[-1, 0, 1, 2]