从排序数组中删除重复项
给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。
不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。
个人代码,较为弱智。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
vector<int>::iterator iter;
int m;
if(nums.size()==0) return 0;
else m=nums[0];
for(iter=++nums.begin();iter!=nums.end();)
{
if(*iter!=m){
m=*iter;
++iter;
}
else{
iter=nums.erase(iter);
}
}
return int(nums.size());
}
};
排名第一代码:
思路很简单,就是遍历数组,不同的元素提前,不会改变数组大小。
class Solution {
public:
int removeDuplicates(vector<int>& nums){
short int endpos = 0;
if (nums.size() == 0) return 0;
for(short int i = 0; i<nums.size(); ++i) {
if(nums[endpos]!=nums[i]){
nums[++endpos] = nums[i];
}
}
return endpos +1;
}
};
上一篇: HTML 和CSS 学习(4)