Учитывая массив, содержащий n различных чисел, взятых из 0, 1, 2, ..., n, найдите тот, который отсутствует в массиве.
Пример 1:
Ввод: [3,0,1]
Вывод: 2
Мой подход - прочитать каждый элемент, а затем умножить этот индекс на -1.Независимо от того, какой индекс массива остается положительным, тот, который отсутствует (мне приходится обрабатывать ноль отдельно)
Мой код вызывает переполнение кучи в строке, где я пытаюсь умножить элемент на -1
class Solution {
public:
int missingNumber(vector<int>& nums) {
bool zeroFound = false;
for(auto i = nums.begin(); i < nums.end(); i++) {
if(*i == 0) {
zeroFound = true;
} else {
int value = *i;
printf("Inner %d %d\n", value, nums[value -1]);
//nums[value - 1] = value * (-1);
}
}
if(!zeroFound) {
return 0;
} else {
int count = 1;
for(auto i = nums.begin(); i < nums.end(); i++, count++) {
if(*i > 0) {
return count;
}
}
}
return -1;
}
};