题目描述:
Given an array and a value, remove all instances of that > value in place and return the new length.
The order of elements can be changed. It doesn’t matter what you leave beyond the new length.
输入例子:
[1,2,2,3,2,4]
2
输出结果:
3
解决思路:
用两个指针 i,j 遍历数组,如果碰到 value ,用 j 记录位置,同时递增 i ,直到下一个非 value 的元素出现,将此时 i 对应的值赋给 j 位置的值,然后 j++。重复此过程,直到遍历结束,j 的值就是数组的长度。
Java实现:
public Class Solution{
public static int removeElement(int arr[], int elem){
int res = 0 ;
for(int i = 0 ; i < arr.length; i ++ ) {
if (arr[i] == elem) {
continue;
}
arr[res] = arr[i];
res++;
}
return res;
}
}
GoLang实现:
func Solution(arr []int ,elem int) int {
res := 0
for i := 0; i < len(arr); i++ {
if arr[i] == elem {
continue
}
arr[res] = arr[i]
res++
}
return res
}