问题:有了[1]的基础,给定一个数组nums和val,原地(in-place)去除所有等于val的元素,返回数组长度。[2]
//不能开辟额外空间。数组元素顺序可以改变。
输入:数组nums和val
输出:length
思路:使用两个pointer,一个遍历数组,另一个作为存放满足条件的元素的下标。
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
if(nums.size()==0)
return 0;
int j=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]!=val)
{
nums[j]=nums[i];
j++;
}
}
return j;
}
};
solution[3]给了一个新的idea,把remove的元素放在数组末尾,相当于数组的长度减1. 这在remove的元素比较少时更有效率。