这个题要求移除相同元素,还是用双指针(一前一后)的方法,不等于value的值,就将他保留下来,数组序号加一
class Solution {
public:
int removeElement(vector& nums, int val) {
int a = 0;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] != val) {
nums[a] = nums[i];
a++;
}
}
return a;
}
};
这种方法最多是需要全部遍历的,加入第一个元素就是value其他都不是就亏了,还可以用左右双指针,左边的值如果等于value就将右边的值覆盖过来,判断如果不满足条件就再覆盖过来
class Solution {
public:
int removeElement(vector& nums, int val) {
// int a = 0;
// for (int i = 0; i < nums.size(); i++) {
// if (nums[i] != val) {
// nums[a] = nums[i];
// a++;
// }
// }
// return a;
int l=0;
int r=nums.size()-1;
while(l<=r){
if(nums[l]==val){
nums[l]=nums[r];
r--;
}
else{
l++;
}
}
return l;
}
};



