原题链接
/** @lc app=leetcode.cn id=27 lang=cpp** [27] 移除元素标签:拷贝覆盖主要思路是遍历数组nums,每次取出的数字变量为num,同时设置一个下标ans在遍历过程中如果出现数字与需要移除的值不相同时,则进行拷贝覆盖nums[ans] = num,ans自增1如果相同的时候,则跳过该数字不进行拷贝覆盖,最后ans即为新的数组长度这种思路在移除元素较多时更适合使用,最极端的情况是全部元素都需要移除,遍历一遍结束即可时间复杂度:O(n),空间复杂度:O(1)*/
#include <vector>
using namespace std;
class Solution {
public:int removeElement(vector<int>& nums, int val) {int j =0;//即用来计数,也用来记录下标for(int i=0;i<nums.size();i++){if(nums[i] != val)nums[j++] = nums[i];}return j;}
};