Mari kita tentukan proses penghancuran array angka. Dalam naksir kita membaca array kiri ke kanan. Jika pada suatu titik kita menemukan dua elemen yang sama dalam satu baris, kita menghapus yang pertama dan menggandakan yang kedua. Sebagai contoh di sini adalah proses menghancurkan array berikut
[5,2,2,3]
^
[5,2,2,3]
^
[5,2,2,3]
^
[5,4,3]
^
[5,4,3]
^
Elemen yang sama dapat dihancurkan beberapa kali, misalnya [1,1,2]
menjadi [4]
ketika dihancurkan.
Kami akan memanggil array yang tidak bisa dihancurkan ketika proses menghancurkan array itu tidak mengubahnya. Misalnya [1,2,3]
masih [1,2,3]
setelah dihancurkan.
Tugas Anda adalah mengambil array dan menentukan jumlah crush yang diperlukan untuk membuatnya tidak bisa dihancurkan. Anda hanya perlu mendukung bilangan bulat pada kisaran 0 hingga 2 32 -1
Ini adalah kode-golf sehingga jawaban akan dinilai dalam byte dengan lebih sedikit byte lebih baik.
Uji Kasus
[1] -> 0
[1,1] -> 1
[2,1,1] -> 2
[4,2,1,1] -> 3
[2,2,2,1,1] -> 3
[0,0,0,0] -> 1
[4,0,0,0,4] -> 1
[4,0,0,0,0,4] -> 1
[] -> 0
0,0,0,0
hanya itu 1
. Mungkin ide untuk secara eksplisit menyebutkan suatu tempat bahwa kita menghitung berapa kali kita harus melalui array untuk menghancurkannya secara penuh dan tidak , seperti yang saya pikirkan, jumlah total kali kita menghancurkan 2 angka bersama-sama.
[1,1,2,4,8]
mengembalikan 1 atau 4?