题目描述:
方法1:使用双指针,快慢指针,慢指针用于将所有不等于val的元素前移,fast指针用于寻找每个不等于val的元素
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int slow = 0;
int fast = 0;
while(fast < nums.size()){
if(nums[fast] != val){
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
};
方法2: 不断记录nums中等于val的数字个数,计为num_e,然后不断把不等于val的数前移 num_e个
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int num_e = 0;
for(int i=0;i<nums.size();i++){
if(nums[i] == val){
num_e++;
continue;
}
else{
nums[i-num_e] = nums[i];
}
}
return nums.size()-num_e;
}
};