算法day2 移除元素
题目描述

思路:
这里主要介绍的是一种采取快慢双指针的思路。我们可以设置快指针fast来获取数组的元素,慢指针slow来获取数组的位置。这样我们采用fast指针的循环对整个数组进行遍历,当当前的fast指向的元素不等于目标元素val时,我们就将fast指向的元素更新到slow指向的位置,随后fast与slow后移;当相等时,我们依旧后移fast,但不后移slow,因为这个位置在此轮未赋值,直到fast遍历完成后,我们返回slow指针即可。
代码如下。
int removeElement(vector<int>& nums, int val) {
//这里是采用了快慢双指针,快指针来获得元素,慢指针来获取要更新元素的位置
int fast = 0;
int slow = 0;
int len = nums.size();
for(fast;fast<len;fast++){
if( nums[fast] != val ){ //只要不等于目标元素,我们就更新fast指向元素的数据到slow指向的位置
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
时间复杂度:O(n)
空间复杂度:O(1)
END
浙公网安备 33010602011771号