Remove Element
问题描述:删除数组中与给定数字相同的元素,并返回新数组的长度。
问题解决:这道题看起来很简单,我的实现是下面这样的,
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int len=nums.size();
for(int i=0;i<len;)
{
if(nums[i]==val)
{
nums.erase(nums.begin()+i);
len--;
}
else
i++;
}
return nums.size();
}
};
但是效果很差,仅仅是beats 4.39 % of cpp submissions.
再次看了题目,发现我们并不需要把vector中的元素给删掉,我们只要把那些有效的元素往前移动就可以。
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int cnt=0;
for(int i=0;i<val.size();i++)
{
if(nums[i]!=val)
nums[cnt++]=nums[i];
}
return cnt;
}
};
beats 98.30 % of cpp submissions.
很想知道另外1.70%的大神是怎么做的。。。