Bạn được tặng một cái cây, theo truyền thống khoa học máy tính, có gốc ở đỉnh và lá ở phía dưới. Các nút lá được dán nhãn với số. Mục tiêu của bạn là lấy chiếc lá đặc biệt được đánh dấu -1
và di chuyển nó lên để trở thành gốc mới.
[3, [[16], -1], [4]] --> [[[[4], 3], [16]]]
Bạn có thể tưởng tượng việc xoay chiếc lá đặc biệt lên đỉnh và để phần còn lại của cây treo trên đó. Giữ cây trong mặt phẳng trong khi xoay nó để có được thứ tự từ trái sang phải của tất cả các nhánh.
Cây mới có tất cả các lá của cây ban đầu trừ -1
.
Đầu vào:
Một cây có lá là số nguyên dương khác biệt, ngoại trừ một lá của -1
. Rễ cây sẽ có ít nhất hai nhánh mọc ra.
Đầu vào được đưa ra dưới dạng một danh sách lồng nhau như [3, [[16], -1], [[4]]]
hoặc biểu diễn chuỗi của nó. Dấu phân cách là tùy chọn và tùy thuộc vào bạn, nhưng các số liền kề cần được tách ra.
Đầu ra:
Xuất hoặc in cây lật theo cùng định dạng với đầu vào của bạn. Thứ tự của các mục danh sách phải chính xác. Sửa đổi tại chỗ là tốt.
Nếu đầu vào / đầu ra của bạn là một kiểu dữ liệu, thì nó phải là một kiểu in theo định dạng bắt buộc theo mặc định. Xây dựng mà về cơ bản làm nhiệm vụ cho bạn không được phép.
Các trường hợp thử nghiệm:
>> [3, [[16], -1], [4]]
[[[[4], 3], [16]]]
>> [2, -1]
[[2]]
>> [44, -1, 12]
[[12, 44]]
>> [[[[-1]]], [[[[4]]]]]
[[[[[[[[[4]]]]]]]]]
>> [[1, 2, 3], [4, -1, 6], [7, 8, 9]]
[[6, [[7, 8, 9], [1, 2, 3]], 4]]
>> [9, [8, [7, [6, -1, 4], 3], 2], 1]
[[4, [3, [2, [1, 9], 8], 7], 6]]
4
hai dấu ngoặc quanh nó hơn3
, nhưng chỉ được sơ đồ sâu hơn 1 lớp.