我们有一个算法刷题群,每周群主会安排 4 道题,节假日没标题。想要一起刷题的小伙伴能够加我微信 zzh0838

标题描绘

算法每日一题 —— 27.移除元素

一切解法均在无参考情况下手写,机打了一遍:

暴力法

    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--;
                size--;
            }
        }
        return size;
    }

双指针法

int removeElement(vector<int>& nums, int val) {
    int slow = 0;
    int fast = 0;
    int size = nums.size();
    for(fast = 0; fast < size; fast  ) {
        if(nums[fast] != val) {
            nums[slow] = nums[fast];
            slow  ;
        } 
    }
    return slow;
}

双指针优化

int removeElement(vector<int>& nums, int val) {
    int left = 0, right = nums.size() - 1;
    while(left < right) {
        if(nums[left] == val) {
            num[left] = nums[right];
            right--;
        } else {
            left  ;
        }
    }
    return left;
}

参考资料