Описание и
правильная реализация тут.
Есть задача, исправить предложенный ниже вариант изменив
не более трех строк.
На тестовом наборе, где например A[] = { 0, 0 }, правильная реализация выдает 0, та что ниже — 1.
Помогите исправить ошибку.
public int solution(int[] A)
{
// n length of the array
int n = A.Length;
int result = 0;
// Calculate the number of consecutive identical ones, for both sides
for (int i = 0; i < n - 1; i++) // why n - 1
{
if (A[i] == A[i + 1])
result = result + 1;
}
// Calculate max delta
int r = 0;
for (int i = 0; i < n; i++)
{
// count : current delta
int count = 0;
if (i > 0)
{
if (A[i - 1] != A[i])
count = count + 1;
else
count = count - 1;
}
if (i < n - 1)
{
if (A[i + 1] != A[i])
count = count + 1;
else
count = count - 1;
}
r = Math.Max(r, count);
}
// max consecutive ones + ?
return result + r;
}