给一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。
暴力移除
public static int removeElement(int[] arr, int val) {
int size = arr.length;
for (int i = 0; i < size; i++) {
if (arr[i] == val){
for (int j = i; j < size-1; j++){
arr[j] = arr[j+1];
}
i--;
size--;
}
}
return size;
}
时间复杂度:
O
(
n
2
)
O(n^2)
O(n2)
空间复杂度:
O
(
1
)
O(1)
O(1)
双指针
public static int removeElement(int[] arr, int val) {
int s = 0;
for (int f =0 ; f < arr.length; f++) {
if (arr[f] != val){
arr[s++] = arr[f];
}
}
return s;
}
时间复杂度:
O
(
n
)
O(n)
O(n)
空间复杂度:
O
(
1
)
O(1)
O(1)