移除元素
移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
示例 1:
输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
思路
双指针,一个指针 fast 专门来遍历,另一个指针 slow 是存放元素的下标
- 当 fast 遍历到与val 不同时,将num [fast] 给到 num [slow],slow指向下一位置
- 当 fast 遍历到与val 相同时,只是将 fast 指向下一位置
Python
def removeElement(self, nums, val):
slow,fast = 0,0
while fast < len(nums):
if nums[fast] != val:
nums[slow] = nums[fast]
slow += 1
fast += 1
return slow
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
C++
int removeElement(vector<int>& nums, int val) {
int slow = 0;
int fast = 0;
while(fast < nums.size())
{
if(nums[fast] != val)
nums[slow++] = nums[fast];
fast ++;
}
return slow;
}