Trước đó tôi đã xác định quá trình nghiền một mảng
Trong một lòng, chúng tôi đọc các mảng từ trái sang phải. Nếu tại một thời điểm chúng ta bắt gặp hai phần tử giống nhau liên tiếp, chúng ta sẽ loại bỏ phần tử thứ nhất và nhân đôi phần tử thứ hai.
Ví dụ ở đây là quá trình nghiền mảng sau
[5,2,2,4]
^
[5,2,2,4]
^
[5,2,2,4]
^
[5,4,4]
^
[5,4,4]
^
[5,8]
^
Lưu ý rằng cùng một yếu tố có thể được thu gọn nhiều lần. Trong ví dụ 2,2,4
đã được thu gọn 8
trong một lần duy nhất.
Bây giờ nghiền nát các mảng là dễ dàng, những gì khó khăn là làm mờ chúng. Nhiệm vụ của bạn là lấy một mảng các số nguyên dương làm đầu vào và đầu ra mảng lớn nhất có thể tạo thành đầu vào khi bị nghiền nát nhiều lần. Ví dụ, mảng [4]
được hình thành bằng cách nghiền [2,2]
mà lần lượt được hình thành bằng cách nghiền [1,1,1,1]
. Vì chúng ta không thể có các giá trị không nguyên [1,1,1,1]
không thể bị xóa thêm nữa và đó là câu trả lời của chúng tôi.
Bạn sẽ không bao giờ nhận được một 0
trong mảng đầu vào của bạn bởi vì các mảng như vậy có thể được mở rộng vô thời hạn. Bạn cũng sẽ không bao giờ nhận được một trường hợp có hai số lẻ giống nhau cạnh nhau, những trường hợp như vậy không thể là kết quả của việc nghiền nát.
Đây là môn đánh gôn, vì vậy các câu trả lời sẽ được ghi với kích thước của nguồn được đo bằng byte với ít byte hơn.
Trước khi bạn bắt đầu đưa ra câu trả lời của mình, tôi chỉ muốn nói rằng thử thách này khó khăn hơn đáng kể. Kiểm tra trực giác của bạn khi bạn đi cùng và đảm bảo câu trả lời của bạn vượt qua tất cả các trường hợp kiểm tra.
Các trường hợp thử nghiệm
[] -> []
[5] -> [5]
[6] -> [3,3]
[8] -> [1,1,1,1,1,1,1,1]
[4,8] -> [1,1,1,1,1,1,1,1,1,1,2]
[2,8] -> [1, 1, 1, 1, 2, 1, 1, 1, 1]
[4,4] -> [1,1,1,1,1,1,1,1]
[1,>1,1,1,1,1,1,1,1,1,2]
, [2,>1,1,1,1,1,1,1,1,2]
, [2,1,>1,1,1,1,1,1,1,2]
, [2,2,>1,1,1,1,1,1,2]
, [2,2,1,>1,1,1,1,1,2]
, [2,2,2,>1,1,1,1,2]
, [2,2,2,1,>1,1,1,2]
, [2,2,2,2,>1,1,2]
, [2,2,2,2,1,>1,2]
, [2,2,2,2,2,>2]
, [2,2,2,2,4>]
, thứ hai vượt qua: [2,>2,2,2,4]
, [4,>2,2,4]
, [4,2,>2,4]
, [4,4,>4]
, [4,8>]
. Hy vọng rằng sẽ xóa nó lên. Nếu bạn muốn một số mã để xem câu hỏi trước đó có câu trả lời thực hiện chức năng nghiền.
[4, 4]
nên được loại bỏ, vì chúng ta không bao giờ có thể có được mảng đó sau một chuỗi kéo dài => chuỗi, vì điều này sẽ kết thúc với[8]
[1,1,1,1,1,1,1,1,1,1,2]
sản xuất[4, 8]
thay vì[8, 4]
? điều này nên được[1,>1,1,1,1,1,1,1,1,1,2]
,[2,1,>1,1,1,1,1,1,1,2]
,[2,>2,1,1,1,1,1,1,2]
,[4,1,>1,1,1,1,1,2]
,[4,2,1,>1,1,1,2]
,[4,2,>2,1,1,2]
,[4,>4,1,1,2]
,[8,1,>1,2]
,[8,2,>2]
,[8,4]
?