解法一:暴力破解法
思路:利用两次for循环,每找到一个val值,依次覆盖。
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
// 暴力破解
int len = nums.size();
for(int i = 0; i < len; i++){
if(nums[i] == val){
for(int j = i; j<len-1; j++){
nums[j] = nums[j+1];
}
i--;
len--;
}
}
return len;
}
};
解法二:快慢指针
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
// 快慢指针
int size = nums.size();
int slowindex = 0;
for(int fastindex = 0 ; fastindex < size; fastindex++){
if(nums[fastindex] != val){
nums[slowindex++] = nums[fastindex];
}
}
return slowindex;
}
};