Я пытаюсь написать программу, чтобы идентифицировать вхождения 3 последовательных целых чисел в заданном массиве из N чисел и заменить их средним значением, удалив два других.Например, Вход-> 55 99 99 100 101 101 34 35 36 5 28 7 50 50 51 52 52 24 13 14 15 5 6 7 37 31 37 38 39 36 40 Выход-> 55 100 35 5 28 7 51 24 14 6 3731 38 36 40
Для этого я написал этот метод, который принимает массив в качестве входных данных и возвращает измененный массив.
//input
int[] original = new int[] { 1, 3, 4, 5, 5, 6, 8} ;
List<int> lstoriginal = new List<int>(original);
List<int> modified = Test(lstoriginal);
//method
public static List<int> Test(List<int> arrayInput)
{
for (i = 0; i < arrayInput.Count; i++)
{
if (i + 2 < arrayInput.Count)
{
if (arrayInput[i + 2] == arrayInput[i + 1] + 1
&& arrayInput[i + 2] == arrayInput[i] + 2)
{
arrayInput.RemoveAt(i + 2);
arrayInput.RemoveAt(i);
List<int> temp = arrayInput;
Test(temp);
}
}
}
return arrayInput;
}
Следующие шаги / результаты выполнения, которые я проанализировал, -
1 - Первоначально, если тестовый вход 1, 3, 4, 5, 5, 6, 8
2-Когда i = 1 и он находит, что 3,4,5 находится в последовательности, он удаляет 3 и 5, и список становится 1,4,5,6,8
3-В следующий раз, когда я= 1, тогда он находит 4,5,6 и удаляет 4 и 6, а новый список 1,5,8
4-я ожидаю выхода из цикла, когда i + 2