代码随想录-力扣27 移除元素
1.暴力解法
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int size = nums.size();
for(int i = 0;i < size; i++){
if(nums[i] == val){
for(int j = i; j < size-1; j++)
nums[j] = nums[j+1];
//后面的数依次向前移动覆盖掉目标元素
i--;
//移动来的第一个元素并不能确定就一定不是要删除的,
//所以i还得退一格检测移过来的第一个元素,这样就不会漏掉每一个元素
size--;
}
}
return size;
}
};
2.快慢双指针(很妙)
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int slow = 0;
for(int fast = 0; fast < nums.size(); fast++)
if(nums[fast] != val)
nums[slow++] = nums[fast];
return slow;
}
};