Я новичок, поэтому прошу комментировать, даже если это слишком распространенная вещь, чтобы знать, я буду постепенно учиться. спасибо
Ниже приведен код для поиска наименее пропущенного положительного числа, и он правильно реализован, но у меня есть сомнения, позвольте мне объяснить на примере ввода
5
-4 -3 -2 1 2
Это правильно. Вывод должен быть 3
Но до получения окончательного кода мой предыдущий код давал Вывод 5 , поэтому я добавил строку №. 35
Потому что в том случае, когда он содержит некоторые нет. меньше 1, а затем 1, 2 3 .. тогда Мой код не возвращает никакого значения
Ссылка для кода https://ide.geeksforgeeks.org/5tKboSc4kj
Поэтому мой вопрос заключается в том, что если l oop не возвращает никакого значения, то почему компилятор не показывает какую-либо ошибку или возвращает какое-либо мусорное значение, а возвращает размер массива, который я тестировал с помощью нескольких похожих тестов, таких как -ve no. ' s и 1 2 .. на выходе всегда получается размер массива
. Для тестирования нескольких тестовых случаев я использовал Microsoft Visual studio, а также тестировал на codechef, geeksforgeeks (c ++ 11), точка обучения (c ++ 11).
int solve(int arr[], int n)
{
sort(arr, arr + n);
int i = 0, track = 1;
while (arr[i] != 1 && i < n) // to skip -ve no.s and 0
i++;
if (i == n)
return 1;
while (i < n)
{
if (arr[i] == track)
{
track++;
while (arr[i] != track && i < n) // for handling duplicates
{
if (arr[i] > track)
return track;
i++;
}
}
else
{
return track;
}
}
// return track;
}