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.
[分析] 注意内部while的判断条件有等号,考虑nums]{1}, val=1
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
[分析] 注意内部while的判断条件有等号,考虑nums]{1}, val=1
public class Solution {
public int removeElement(int[] nums, int val) {
if (nums == null || nums.length == 0)
return 0;
int p = 0, q = nums.length - 1;
while (true) {
while (p <= q && nums[p] != val) p++;
while (p <= q && nums[q] == val) q--;
if (p < q) {
nums[p++] = nums[q];
nums[q] = val;
} else {
break;
}
}
return q + 1;
}
}