题目
给你一个数组 nums
和一个值 val
,你需要 原地 移除所有数值等于 val
的元素。元素的顺序可能发生改变。然后返回 nums
中与 val
不同的元素的数量。
思路
1、初始化一个k=0,作为原数组的新下标
2、从前往后遍历数组,只要找到与不等于val值的数直接移到k下标的数组位置
3、返回去重后的数组长度,就是k(注意,虽然k从0开始,但是最后一个不相等于val的数移动后,k还会+1,即等于去重后的数组长度)
代码
class Solution {
public int removeElement(int[] nums, int val) {
int k = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != val) {
nums[k++] = nums[i];
}
}
return k;
}
}