【leetcode】27. 原地移除元素(图解)

目录

  • 1. 思路(图解)
  • 2. 代码

题目链接:leetcode 27. 移除元素

题目描述:
【leetcode】27. 原地移除元素(图解)_第1张图片

需要注意的是,返回的是新数组长度,但是输出的是数组元素。

【leetcode】27. 原地移除元素(图解)_第2张图片

1. 思路(图解)

思路一:空间换时间(不满足题目要求),创建一个数组,不等于val的值放入这个数组;

思路二:快慢指针

  1. dst和src对应下标,初始为0;
  2. nums[src]等于val:src自增,目的是找到不等于val的值;
  3. nums[src]不等于val:将nums[dst]赋值nums[src],dst和src自增;
  4. 返回dst就是新数组的长度,同时0-dst间没有等于val的值。
    【leetcode】27. 原地移除元素(图解)_第3张图片
    【leetcode】27. 原地移除元素(图解)_第4张图片

2. 代码

int removeElement(int* nums, int numsSize, int val) {
    int dst = 0;
    int src = 0;
    while (src < numsSize) {
        if (nums[src] != val) {
            nums[dst] = nums[src];
            ++dst;
            ++src;
        }
        else {
            ++src;
        }
    }
    return dst;
}

你可能感兴趣的:(Data,Structure,and,Algorithm,刷题,leetcode,算法)