Given an array and a value, remove all instances of that value in place and return the new length.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
class Solution {
public:
int removeElement(int A[], int n, int elem)
{
int rmvCnt = 0;
int mark = n;
for(int i = 0; i < n; i++)
{
if(i == mark)
break;
if(A[i] == elem)
{
rmvCnt++;
for (int j = mark-1; j > i; j--)
{
if(elem == A[j])
{
rmvCnt++;
mark = j;
}
if(elem!=A[j])
{
A[i] = A[j];
A[j] = elem;
mark = j;
break;
}
}
}
}
return n-rmvCnt;
}
};
思路:
每当发现一个待删元素后,将它的值与数组的最后一个非待删元素交换。