class Solution {
/**
思路: 划分垃圾区域
例如: nums[] = {0,1,2,2,3,0,4,2} val = 2
1. 0 1 2 2 3 0 4 2
i r
2. 0 1 2 2 3 0 4 2
i r
3. 0 1 2 2 3 0 4 2
i r
4. 0 1 2 2 3 0 4 2
i r
5. 0 1 4 2 3 0 2 2
i r
6. 0 1 4 2 3 0 2 2
i r
7. 0 1 4 0 3 2 2 2
i r
8. 0 1 4 0 3 2 2 2
i r
*/
public int removeElement(int[] nums, int val) {
int r = nums.length;
for (int i = 0; i < nums.length; i++) {
while (r > i && nums[i] == val) {
swap(nums, i, --r);
}
}
return r;
}
private void swap(int[] nums, int i, int j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}