题意:在数组中移掉指定元素val,得到新的长度newlength。数组元素顺序可以改变,并且新的长度之后的元素可以忽略。
这道题关键在于要将val外的元素移到newlength前面。如果遍历数组然后删除等于val的项,会改变数组结构,不便于遍历。所以这里的做法是不删除元素,只是将元素向前移动。
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int start=0;
for(int i=0;i<nums.size();i++)
if(val!=nums[i])
nums[start++]=nums[i];
return start;
}
};