public class Solution {
public int removeElement(int[] A, int elem) {
int len = A.length;
for(int i = 0; i < len;){
if(A[i] == elem){
A[len - 1] ^= A[i];
A[i] ^= A[len - 1];
A[len - 1] ^= A[i];
len--;
}
else{
++i;
}
}
return len;
}
}
这种交换的方式比下面这种更快一些
但是复杂度是一样的,时间不同可能是测试数据引起的
public class Solution {
public int removeElement(int[] A, int elem) {
int len = A.length;
int index = 0;
for(int i = 0; i < len; ++i){
if(A[i] != elem){
A[index++] = A[i];
}
}
return index;
}
}