- 第一種解法,暴力解法,使用兩個for循環一個進行遍歷,一個進行覆蓋,代碼如下:
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+1; j < size; j++){nums[j-1] = nums[j];}i--;size--;}}return size;}
};
- 第二種解法,雙指針法(快慢指針法): 通過一個快指針和慢指針在一個for循環下完成兩個for循環的工作。
- 快指針:尋找新數組的元素 ,新數組就是不含有目標元素的數組
- 慢指針:指向更新 新數組下標的位置
代碼如下:
class Solution {
public:int removeElement(vector<int>& nums, int val) {int size = nums.size();int slowindex = 0;int fastindex = 0;for(fastindex; fastindex < size; fastindex++){if(nums[fastindex] != val){nums[slowindex++] = nums[fastindex];}}return slowindex;}
};