开始学习算法,先来一个简单的玩玩。
题目:在一个数组中移除指定的value,不能新建数组,返回新的数组长度。
大致思路:遍历数组,定义两个变量i,j,如果碰到了value,使用j记录位置,同时递增i,直到下一个非value出现,将此时i对应的值复制到j的位置上,增加j,重复上述过程直到遍历结束。这时候j就是新的数组长度。
public static int removeElement(int []A, int n, int elem) {
int j = 0;
for (int i = 0; i < n; i++) {
if (A[i] == elem) {
continue;
}
A[j] = A[i];
Log.d("wsk----", "int A[]==" + A[j] + "--j==" + j);
j++;
}
Log.d("wsk----", "int A[]==" + Arrays.toString(A) + "--j==" + j);
return j;
}