LeetCode热题(JS版)- 27. 移除元素

173 阅读1分钟

题目

给定一个整数数组nums和一个整数val,删除numsin place中出现的所有val. 元素的相对顺序可以改变。

由于在某些语言中无法更改数组的长度,因此必须将结果放在数组nums第一部分中。更正式地说,如果在删除重复项后有k个元素,则nums的前k元素应保存最终结果。除了第一个k元素之外,你留下什么并不重要。

在将最终结果放入nums的前k个槽之后,返回k

不要为另一个阵列分配额外空间。只有O(1)额外内存。

示例 1:

输入: nums = [3,2,2,3], val = 3
输出: 2, nums = [2,2,_,_]
说明:您的函数应该返回k=2,nums的前两个元素为2。
在返回的k之外留下什么并不重要(因此它们是下划线)。

示例 2:

输入: nums = [0,1,2,2,3,0,4,2], val = 2
输出: 5, nums = [0,1,4,0,3,_,_,_]
说明:您的函数应该返回k=5,nums的前五个元素包含00134。
注意,这五个元素可以按任意顺序返回。
在返回的k之外留下什么并不重要(因此它们是下划线)。

思路

  • 太简单了,按个比
function removeElement(nums: number[], val: number): number {
  let index = 0;
  for (let i = 0; i < nums.length; i++) {
    if (nums[i] !== val) {
      nums[index] = nums[i];
      index++;
    }
  }

  return index; // ++已经正好了
}

image.png