Optimal: compare with the last kept value
Time O(n) Space O(1)write = 1. For each read from 1, if nums[read] != nums[write − 1], copy it to nums[write++].
class Solution {
public int removeDuplicates(int[] nums) {
int write = 1;
for (int read = 1; read < nums.length; read++) {
if (nums[read] != nums[write - 1]) nums[write++] = nums[read];
}
return write;
}
}Verdict: One pass in place.