Given a sorted array, remove the duplicates in-place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
Example:
Given nums = [1,1,2],
Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
It doesn't matter what you leave beyond the new length.
这里的思路和第27题几乎一样,用induction的想法,假设0 ~ i-1成立,然后推i-1到i的关系,加上base case和special case的判断。
public int removeDuplicates(int[] nums) {
//special case
if (nums == null || nums.length == 0) return 0;
//base case
int len = 1;
//general case
for (int i = 1; i < nums.length; i++) {
if (nums[i] != nums[len - 1]) {
nums[len] = nums[i];
len++;
}
}
return len;
}