pengantar
Misalkan Anda ingin menghitung maksimum ekor dari daftar angka, yaitu, maksimum setiap sufiks nonempty. Salah satu cara untuk melakukannya adalah dengan berulang kali memilih satu nomor dan menggantinya dengan angka yang lebih tinggi setelah itu, sampai ini tidak mungkin lagi. Dalam tantangan ini, tugas Anda adalah melakukan satu langkah dari algoritma ini.
Tugas
Input Anda adalah daftar bilangan bulat L , yang mungkin kosong. Output Anda akan menjadi daftar L di mana tepatnya satu angka L i telah digantikan oleh L j lain , di mana L i <L j dan i <j .
Dengan kata lain, Anda harus mengganti satu nomor dengan angka yang lebih tinggi yang terjadi setelahnya.
Anda dapat memilih i dan j secara bebas di antara semua pasangan yang valid, dan pilihannya bisa tidak deterministik.
Jika i dan j seperti itu tidak ada (yaitu L tidak meningkat), output Anda harus L tidak berubah.
Contoh
Pertimbangkan input L = [3, 1, 4, -1, 2] . Operasi yang mungkin adalah untuk mengganti 3 dengan 4 , ganti 1 dengan 4 , ganti 1 dengan 2 , atau ganti -1 dengan 2 . Jadi output yang mungkin adalah:
[ 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)]
Jika Anda mengulangi operasi cukup kali, hasil akhirnya akan [4,4,4,2,2] , yang justru merupakan daftar ekor maxima dari L .
Aturan dan penilaian
Anda dapat menulis program atau fungsi lengkap. Dalam kasus yang terakhir, Anda dapat memodifikasi input di tempat alih-alih mengembalikan array baru, jika bahasa Anda memungkinkan. Format input dan output fleksibel karena alasan tertentu.
Hitungan byte terendah menang.
Uji kasus
Semua output yang mungkin ditampilkan.
[] -> []
[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)
?