Попытка написать некоторый код, и erase () выдает ошибку времени выполнения.Что не так с тем, как я использовал стирание?
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
int size = nums.size();
vector<int> list;
for(int i = 1; i <= size; i++)
list.push_back(i);
for(int i = 0; i < size; i++) {
int num = nums[i];
list[num - 1] = 0;
}
for(int i = 0; i < size; i++) {
if(list[i] == 0) {
list.erase(list.begin() + i);
}
}
return list;
}
};
Вот проблема, которую я пытаюсь решить
Учитывая массив целых чисел, где 1 ≤ a [i] ≤ n (n = размермассива), некоторые элементы появляются дважды, а другие - один раз.
Найдите все элементы из [1, n] включительно, которые не отображаются в этом массиве.
Не могли бы вы сделать это без дополнительныхпространство и в O (N) времени выполнения?Вы можете предположить, что возвращенный список не считается дополнительным пробелом.
Пример:
Ввод: [4,3,2,7,8,2,3,1]
Выход: [5,6]