26. Remove Duplicates from Sorted Array
这种题都是双指针,一个遍历,一个记录有效长度。
一开始需要判断一下。
我一上来用while找到第一个重复的元素以便于更改,其实没必要,我们知道第1个元素无论如何也会在我们的结果中,所以从第二个直接开始遍历就行。。一开始的WHIL过程就是for loop中 nums[j] == nums[j-1]的过程。。。
Time: O(n)
Space: O(1)
public class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
if (nums.length == 1) return 1;
// 1 2 2 3 4 4 5
// 1 1 1 3 4 4 5
int i = 1;
for (int j = 1; j < nums.length; j++) {
if (nums[j] != nums[j-1]) {
nums[i] = nums[j];
i++;
}
}
return i;
}
}