Qus: удаление дубликатов из отсортированного массива. Для отсортированного массива удалите дубликаты на месте, чтобы каждый элемент появлялся только один раз и возвращал новую длину.
Обратите внимание, что даже если мы хотим, чтобы вы вернули новую длину, не забудьте также изменить исходный массив на месте
Не выделяйте дополнительное пространство для другого массива, вы должны сделать это на месте с постоянной памятью.
Я пробовал следующий код, может ли кто-нибудь помочь, где я ошибаюсь?
#include<iostream>
#include<vector>
using namespace std;
int removeDuplicates(vector<int> &A) {
int m=A.size();
if(m<=1) return m;
vector<int> :: iterator i=A.begin();
vector<int> :: iterator j=A.begin()+1;
vector<int> :: iterator temp;
while(i!=A.end() && j!=A.end())
{
while(j!=A.end() && *i == *j)
{
temp=j;
j++;
A.erase(temp);
}
i=j;
j++;
}
return A.size();
}
int main()
{
vector<int> vec={0,0,0,0,0,0,0,4,4,7,7,7,7,9};
cout<<"ans="<<removeDuplicates(vec);
return 0;
}
std::unique
и _ 2_. Ссылка наstd::unique
даже показывает, как это делается. - person NathanOliver   schedule 01.06.2016erase
все итераторы вектора стали недействительными. Лучше работай с индексами - person Semyon Burov   schedule 01.06.2016std::unique
в качестве ответа (но кандидат получит плюс за знание этого) - person SergeyA   schedule 01.06.2016std::unique
было дополнением, которое я знаю, но это потенциальный вопрос на собеседовании, где это не поможет !! - person Naveen Kumar   schedule 02.06.2016