Given a sorted array nums, 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 1:
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 returned length.
Example 2:
Given nums = [0,0,1,1,1,2,2,3,3,4],
Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.
It doesn’t matter what values are set beyond the returned length.
tag: array, two pointer
method 1
用两根指针,快慢指针法,慢指针left指示要被覆盖的位置,快指针right 判断是否出现不同的数
public int method1(int[] nums){
int res = 1;
for (int right = 1,left = 1; right < nums.length; right++) {
if (nums[right] != nums[right-1]){
nums[left++] = nums[right];
res++;
}
}
return res;
}
summary:
- 两根指针法中的快慢指针:两个指针的方向相同