一开始没有选择较优的算法,导致空间复杂度大。接触到了更多关于vector类型的操作,尤其是在使用erase函数时要注意其返回值迭代器的特殊性。不然容易出现野指针的情况!
class Solution {
public:
/*
* @param nums: An ineger array
* @return: An integer
*/
int removeDuplicates(vector<int> &nums) {
// write your code here
vector<int>::iterator iter1;
vector<int>::iterator iter2;
int n;
int m;
n = nums.size();
for (iter1 = nums.begin(); iter1 != nums.end(); iter1++)
{
iter2 = iter1 + 1;
while (iter2 != nums.end())
{
if (*iter1 == *iter2)
{
iter2 = nums.erase(iter2);
}
else
{
break;
}
}
}
m = nums.size();
return m;
}
};