Этот код принимает на вход массив целых чисел, где 1 ≤ a [i] ≤ n (n = размер массива), некоторые элементы появляются дважды, а другие появляются один раз. Мы должны вернуть недостающие числа.
Вход: [4,3,2,7,8,2,3,1] Выход: [5,6]
Работает нормально в Dev C ++, но когда я отправляю его на веб-сайт под названием leetcode, он выдает следующую ошибку
Сообщение об ошибке времени выполнения:
Строка 924: Char 9: время выполнения ошибка: привязка ссылки к нулевому указателю типа 'int' (stl_vector.h) РЕЗЮМЕ: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../. ./../../include/c++/8/bits/stl_vector.h:933:9
vector<int> findDisappearedNumbers(vector<int>& nums)
{
vector<int> temp;
const int len = nums.size();
int j=0;
//sorted the array
sort(nums.begin(), nums.end());
//Added non-repetitive numbers into a temp vector
for(int i=0;i<len;i++)
{
if(nums[i]!=nums[i+1])
{
temp[j++]=nums[i];
}
}
//cleared nums vector for later use
nums.erase(nums.begin(), nums.end());
//added missing numbers in the sequence to both temp and nums vectors
for(int i=0;i<len;i++)
{
if(temp[i]!=i+1)
{
temp.insert(temp.begin()+i, i+1);
nums.insert(nums.end(),i+1);
}
}
return nums;
}
Я знаю, что этот код неэффективен, я только начал с c ++, а может кто подскажет, почему на сайте не работает?