这两题都是关于数组操作,对于已经排序,需要边记录重复的个数,边向前移动,而没有排序的,这每次遇到目标元素,就和后面不一样的元素进行交换
class Solution {
public:
int removeDuplicates(int A[], int n) {
int cont=0;
for(int i=1;i<n;i++){
if(A[i]==A[i-1])cont++;
else A[i-cont]=A[i];
}
return n-cont;
}
};
class Solution {
public:int removeElement(int A[], int n, int elem) {
if(n==0)return 0;
int len=n;
for(int i=0;i<n;i++){
if(A[i]==elem){
if(A[n-1]!=elem){
A[i]=A[n-1];
}else i--;
n--;
}
}
return n;
}
};