Когда я запускал код через Visual Studio, я получал ошибку -1073741819, и когда я использовал онлайн-компилятор c, я получал: «Ошибка сегментации (ядро сброшено)».
Сначала я получил «двойное освобождение или повреждение"ошибка, но потом я немного изменил код.Я уже некоторое время пытаюсь обнаружить ошибку, но не могу.
Чтобы указать, arr - это массив длиной 2n, содержащий только цифры от 1 до n.
Это проблемный код:
bool islegal(int arr[], int n)
{
int *count = (int*)malloc(sizeof(int)*(n+1));
for (int i = 0; i < 2*n; i++)
{
count[arr[i]]++;
if (count[arr[i]] > 2)
{
free(count);
return false;
}
}
for (int i = 0; i < 2*n; i++)
{
if (count[arr[i]] == 2)
{
if (i+arr[i]<2*n && arr[i] != arr[i + arr[i]])
{
free(count);
return false;
}
}
}
free(count);
return true;
}