Giới thiệu
Giả sử bạn muốn tính cực đại đuôi của một danh sách các số, nghĩa là tối đa của mỗi hậu tố không trống. Một cách để làm điều đó là liên tục chọn một số và thay thế nó bằng một số cao hơn xảy ra sau nó, cho đến khi điều này là không thể nữa. Trong thử thách này, nhiệm vụ của bạn là thực hiện một bước của thuật toán này.
Nhiệm vụ
Đầu vào của bạn là danh sách các số nguyên L , có thể trống. Đầu ra của bạn sẽ là danh sách L trong đó chính xác một số L i đã được thay thế bằng một L j khác , trong đó L i <L j và i <j .
Nói cách khác, bạn sẽ thay thế một số bằng một số cao hơn xảy ra sau nó.
Bạn có thể chọn i và j một cách tự do trong số tất cả các cặp hợp lệ và sự lựa chọn có thể không đặc biệt.
Nếu như tôi và j không tồn tại (ví dụ: L là không tăng), đầu ra của bạn sẽ là L không thay đổi.
Thí dụ
Xét đầu vào L = [3, 1, 4, -1, 2] . Các thao tác có thể là thay 3 bằng 4 , thay 1 bằng 4 , thay 1 bằng 2 hoặc thay -1 bằng 2 . Do đó, các đầu ra có thể là:
[ 3 , 1 , 4 , -1 , 2 ]
------------------------------
[( 4), 1 ,( 4), -1 , 2 ]
[ 3 ,( 4),( 4), -1 , 2 ]
[ 3 ,( 2), 4 , -1 ,( 2)]
[ 3 , 1 , 4 ,( 2),( 2)]
Nếu bạn lặp lại các hoạt động đủ thời gian, kết quả cuối cùng sẽ là [4,4,4,2,2] , mà chính xác là danh sách các đuôi cực đại của L .
Quy tắc và tính điểm
Bạn có thể viết một chương trình đầy đủ hoặc một chức năng. Trong trường hợp sau, bạn có thể sửa đổi đầu vào tại chỗ thay vì trả về một mảng mới, nếu ngôn ngữ của bạn cho phép điều đó. Định dạng đầu vào và đầu ra là linh hoạt trong lý do.
Số byte thấp nhất sẽ thắng.
Các trường hợp thử nghiệm
Tất cả các kết quả đầu ra có thể được hiển thị.
[] -> []
[1] -> [1]
[1,2] -> [2,2]
[2,1] -> [2,1]
[4,4,4,4] -> [4,4,4,4]
[-1,-3,-10] -> [-1,-3,-10]
[1,3,10] -> [3,3,10] [10,3,10] [1,10,10]
[1,1,2,1] -> [2,1,2,1] [1,2,2,1]
[998,64,2,-94,-789] -> [998,64,2,-94,-789]
[998,2,64,-94,-789] -> [998,64,64,-94,-789]
[3,1,4,-1,2] -> [4,1,4,-1,2] [3,4,4,-1,2] [3,2,4,-1,2] [3,1,4,2,2]
[-1,4,0,4,7,2,3] -> [4,4,0,4,7,2,3] [0,4,0,4,7,2,3] [-1,4,4,4,7,2,3] [7,4,0,4,7,2,3] [-1,7,0,4,7,2,3] [-1,4,7,4,7,2,3] [-1,4,0,7,7,2,3] [2,4,0,4,7,2,3] [-1,4,2,4,7,2,3] [3,4,0,4,7,2,3] [-1,4,3,4,7,2,3] [-1,4,0,4,7,3,3]
[3542,-12311,7662,1672,6081] -> [7662,-12311,7662,1672,6081] [3542,7662,7662,1672,6081] [3542,1672,7662,1672,6081] [6081,-12311,7662,1672,6081] [3542,6081,7662,1672,6081] [3542,-12311,7662,6081,6081]
x=>x.map(c=>c<x[++i]&!d?x[d=i]:c,d=i=0)
?