思路:l和r终结情况为r=l此时要么不为val的值,+1,是val的值直接返回
那么双指针时候就是l<r
l负责指向不为val的值,r负责指向为val的值,swap
while(l<r)left++;
while(l<r)right++;
int l=0,r=length()-1;
while(l<r)
{
while(l<r && s[l]=val)
l++;
while(l<r && s[r]!=val)
r--;
swap//漏了
}
if(s[l]!=val)return l+1;
else return l;
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int len = nums.size();
if(len==0)return 0;
int l=0,r=len-1;
while(l<r)
{
while(l<r && nums[l]!=val)
{
l++;
}
while(l<r && nums[r]==val)
r--;
swap(nums[l],nums[r]);
}
if(nums[l]!=val) return l+1;
else return l;
}
};