题目
给定一个整数数组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的前五个元素包含0、0、1、3和4。
注意,这五个元素可以按任意顺序返回。
在返回的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; // ++已经正好了
}