Phỏng vấn top 150Dễ dàng

Sao chép danh sách bằng con trỏ ngẫu nhiên

Hướng dẫn chi tiết và cách triển khai Python cho bài toán 'Sao chép danh sách bằng con trỏ ngẫu nhiên'.

Tuyên bố vấn đề

Dễ dàng

Một danh sách liên kết có độ dài n được đưa ra sao cho mỗi nút chứa một con trỏ ngẫu nhiên bổ sung, con trỏ này có thể trỏ đến bất kỳ nút nào trong danh sách hoặc null.

Xây dựng một bản sao sâu của danh sách. Bản sao sâu phải bao gồm chính xác n nút hoàn toàn mới, trong đó mỗi nút mới có giá trị được đặt thành giá trị của nút gốc tương ứng. Cả con trỏ tiếp theo và con trỏ ngẫu nhiên của các nút mới phải trỏ đến các nút mới trong danh sách được sao chép sao cho các con trỏ trong danh sách gốc và danh sách được sao chép biểu thị cùng một trạng thái danh sách.

Danh sách được biểu diễn dưới dạng danh sách các cặp [val, Random_index] trong đó Random_index là chỉ mục của nút mà con trỏ ngẫu nhiên trỏ tới hoặc -1 nếu nó trỏ đến null. Triển khai hàm copyRandomList(head: list) -> list trả về bản sao sâu có cùng định dạng.

Ràng buộc
  • 0 <= n <= 1000
  • -10000 <= Node.val <= 10000
  • Node.random is null or points to some node in the linked list

Ví dụ

Example 1
Input
[[7,-1],[13,0],[11,4],[10,2],[1,0]]
Output
[[7,-1],[13,0],[11,4],[10,2],[1,0]]
Explanation

The deep copy has the same structure. Node 0 (val=7) has random=null, Node 1 (val=13) has random pointing to Node 0, etc.

Example 2
Input
[[1,1],[2,1]]
Output
[[1,1],[2,1]]
Explanation

Node 0 (val=1) has random pointing to Node 1. Node 1 (val=2) has random pointing to Node 1 (itself).

Example 3
Input
[[3,-1],[3,0],[3,-1]]
Output
[[3,-1],[3,0],[3,-1]]
Explanation

Three nodes all with value 3. Node 1's random points to Node 0.

Need a Hint?
Hãy cân nhắc việc sử dụng các cấu trúc dữ liệu dành riêng cho Danh sách Liên kết như tập hợp hoặc đống.
Edge Cases to Watch
  • Cấu trúc đầu vào trống
  • Đầu vào phần tử đơn
  • Giới hạn số lớn

Sẵn sàng để giải quyết?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Mở trong Trình chỉnh sửa
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.