题解思路

这题其实就很好弄,想要把重复的元素去掉的话,遍历一次就行,不用想的太过复杂。只需要两个指针 l 和 i 就能解决。遍历每一次都检查一下,nums[i]是否等于val,如果不等于的话,就把nums[i]赋值到nums[l],并且l自增一下。如果等于的话就什么都不用做。

代码

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int l = 0;
        for(int i = 0; i < nums.size(); i++) {
            if(nums[i] != val) {
                nums[l] = nums[i];
                l++;
            }
        }
        return l;
    }
};