给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。
元素的顺序可以改变,并且对新的数组不会有影响。
给出一个数组 [0,4,4,0,0,2,4,4]
,和值 4
返回 4
并且数组前4个元素为 [0,0,0,2]
设两个指针,一个指向当数组头,一个指向数组尾,将头指针依次想尾指针靠近,如果过程中有值等于要删除的值,则将尾指针的值与头指针的值交换,知道两个指针碰头。
public class Solution {
/**
*@param A: A list of integers
*@param elem: An integer
*@return: The new length after remove
*/
public int removeElement(int[] A, int elem) {
int i = 0;
int j = A.length - 1;
while (i <= j) {
if (A[i] == elem) {
A[i] = A[j];
j--;
} else {
i++;
}
}
return i;
}
}