33 lines
610 B
Java
33 lines
610 B
Java
|
class Solution {
|
|||
|
private static int skipVal(int[] nums, int val, int i) {
|
|||
|
for (
|
|||
|
/* no-op */ ; i >= 0 && nums[i] == val; /* no-op */ ) {
|
|||
|
--i;
|
|||
|
}
|
|||
|
|
|||
|
return i;
|
|||
|
}
|
|||
|
|
|||
|
public int removeElement(int[] nums, int val) {
|
|||
|
var r = skipVal(nums, val, nums.length - 1);
|
|||
|
|
|||
|
int l;
|
|||
|
for (l = 0; l < r; ++l) {
|
|||
|
if (nums[l] == val) {
|
|||
|
var tmp = nums[l];
|
|||
|
nums[l] = nums[r];
|
|||
|
nums[r] = tmp;
|
|||
|
|
|||
|
r = skipVal(nums, val, r);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// shift ‹l› to the first ‹val›
|
|||
|
while (l < nums.length && nums[l] != val) {
|
|||
|
++l;
|
|||
|
}
|
|||
|
|
|||
|
return l;
|
|||
|
}
|
|||
|
}
|