需求:
给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。元素的顺序可以改变,并且对新的数组不会有影响。
思路:
对于数组的元素删除操作,删除之后,其它元素的排列顺序没有发生改变,可以使用两指针思想。一个指针用来维护有效元素的个数,另一个用来遍历数组。
1)index记录有效元素的个数,此问题中初始化为0
2)i遍历数组元素,当前元素不是指定要删除的元素时,则数组中角标为index的元素值为当前元素,index自增
代码:
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) {
// write your code here
int index = 0;
for(int i = 0; i < A.length; i++)
{
if(A[i] != elem)
{
A[index++] = A[i];
}
}
return index;
}
}