class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length <= 1) {
return nums.length;
}
// p: the rightest endpoint pointer of a non-repeating subarray
// q: the pointer to detect new non-repeating number
int p = 0;
int q = 1;
// q keeps moving until it finds a non-repeating number or reaches to the end of the array.
while (q < nums.length) {
if (nums[p] != nums[q]) {
nums[p + 1] = nums[q];
p++;
}
q++;
}
// return the length of the non-repeating "array"
return p + 1;
}
}
网友评论