选择一个当做遍历指针,一个当做数组末尾指针,如果等于val,将末尾元素放到需要删除的数组位置,然后将两个指针都减1,进行循环
需要注意,返回时数组末尾指针大小需要+1
int removeElement(int* nums, int numsSize, int val) {
int i=0,j=numsSize-1;
for(;i<=j;i++){
if(nums[i]==val){
nums[i]=nums[j];
i--;
j--;
}
}
return j+1;
}
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int k = 0;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] != val) {
nums[k] = nums[i];
k++;
}
}
return k;
}
};