给你一个数组?nums
?和一个值?val
,你需要?原地?移除所有数值等于?val
?的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用?O(1)
?额外空间并?原地?修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
int removeElement(vector<int>& nums, int val) {
int size = nums.size();
int slow = 0, fast = 0;
while(fast < size)
{
if(nums[fast] != val)
nums[slow++] = nums[fast++];
else
fast++;
/*
if(nums[fast] != val)
nums[slow++] = nums[fast];
fast++;
*/
}
return slow;
}
int removeElement(vector<int>& nums, int val) {
//remove并不能真正的删除目标元素,只会把元素往后移动
nums.earse(remove(nums.begin(), nums.end(), val), nums.end());
return nums.size();
}