让我们定义粉碎数字数组的过程。迷恋我们从左到右读取数组。如果在某一点上我们连续遇到两个相同的元素,则将第一个删除,将第二个加倍。例如,这是粉碎以下数组的过程
[5,2,2,3]
^
[5,2,2,3]
^
[5,2,2,3]
^
[5,4,3]
^
[5,4,3]
^
相同的元件可以折叠多次,例如[1,1,2]
成为[4]
粉碎时。
当粉碎该阵列的过程没有改变数组时,我们将其称为不可粉碎的阵列。例如[1,2,3]
仍然[1,2,3]
被压碎之后。
您的任务是获取一个阵列,并确定使其无法破碎所需的破碎次数。您只需要支持0到2 32 -1范围内的整数
这是代码高尔夫球,因此答案将以字节计分,而字节数越少越好。
测试用例
[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
只有我1
。在某个地方明确提到可能是一个主意,我们正在计算必须遍历数组才能完全粉碎数组的次数,而不是我最初认为的将两个数字粉碎在一起的总次数。
[1,1,2,4,8]
返回1还是4?