“移除元素”
题目描述
给你一个数组
nums
和一个值val
,你需要 原地 移除所有数值等于val
的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用
O(1)
额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
(只需要返回新数组的长度)
来源:chatgpt
//双指针
class Solution {
public int removeElement(int[] nums, int val) {
int j = 0; // 初始化指针 j,用于存放非 val 元素的位置
for (int i = 0; i < nums.length; i++) {
if (nums[i] != val) { // 当 nums[i] 不等于 val 时
nums[j] = nums[i]; // 将 nums[i] 的值赋给 nums[j]
j++; // 递增 j
}
}
return j; // 返回新数组的长度
}
}