学习目标:
C++算法学习之双指针法
学习内容:
双指针法
学习时间:
2022.6.2
简介:
利用双指针法移除数组内的元素
方法:
通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。 功能同调用Vector中的erase函数
快指针用于寻找新数组要的元素,即去除所要删除的元素后,新数组保留的元素
慢指针用于更新新数组的下标值
代码:
// 时间复杂度:O(n)
// 空间复杂度:O(1)
class Solution{
public:
int removeElement(vector<int>& nums, int val) {
int slowIndex = 0;
for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {
if (val != nums[fastIndex]) {
nums[slowIndex++] = nums[fastIndex];
}
}
return slowIndex;
}
};
力扣其他题目:
26.删除排序数组中的重复项
283.移动零
844.比较含退格的字符串(未做)
977.有序数组的平方