bug1:
int removeDuplicates(vector<int> &nums) {
// write your code here
vector<int>::iterator it;
map<int, int>m1;
for (it = nums.begin(); it != nums.end();++it){
if (m1[*it]>0)
nums.erase(it);
else ++m1[*it];
}
return nums.size();
}
会报错:vector iterator not incrementable
原因:erase后会返回一个it,原来的it会失效。
修改:
int removeDuplicates(vector<int> &nums) {
// write your code here
vector<int>::iterator it;
map<int, int>m1;
for (it = nums.begin(); it != nums.end();){
if (m1[*it]>0)
it=nums.erase(it);
else { ++m1[*it]; ++it; };
}
return nums.size();
}
全部代码:
class Solution {
public:
/**
* @param A: a list of integers
* @return : return an integer
*/
int removeDuplicates(vector<int> &nums) {
// write your code here
vector<int>::iterator it;
map<int, int>m1;
for (it = nums.begin(); it != nums.end();){
if (m1[*it]>0)
it=nums.erase(it);
else { ++m1[*it]; ++it; };
}
return nums.size();
}
};