移除元素.
双指针法(快慢指针法)
通过快慢指针在一个for循环下完成两个for循环
快指针:寻找新数组的元素,新数组就是不含目标元素的数组。
慢指针:指向更新新数组下标的位置。
双指针在数组和列表操作中非常常见,很多考察数组、列表、字符串等操作的面试题,都会使用双指针。
class Solution{
public:
int removeElement(vector<int>&nums,int val){
int slow=0;
for(int fast=0;fast<nums.size();fast++)
{
if(val!=fast)
{
nums[slow]=nums[fast];
slow++;
}
}
return slow;
}
};
class Solution{
public:
int removeElement(vector<int>&nums,int val){
int left=0;
int right=nums.size()-1;
while(left<=right)
{
while(lfet<=right&&nums[left]!=val)
++left;
while(lfet<=right&&nums[right]==val)
--right;
if(lfet<right)
{
nums[left]=nums[right];
left++;
right--;
}
}
return left;
}
}
会经常用到的函数:
swap(a,b):定义两个整型变量 a,b通过swap函数交换它们的值。