给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
[3,2,2,4]
3
思路: 双指针法
没有val,就一直快的给慢的赋值,如果有相等的,就不要给慢指针赋值了。也就相当于删除了val。
class Solution {
public:
// 双指针法,一快 一慢,相等的时候慢的指针不走。
int removeElement(vector<int>& nums, int val) {
int slow = 0;
int fast = 0;
for (; fast < nums.size(); fast++) {
if (nums[fast] != val) {
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
};