80. Remove Duplicates from Sorted Array II

Follow up for “Remove Duplicates”:
What if duplicates are allowed at most twice?

For example,
Given sorted array nums = [1,1,1,2,2,3],

Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn’t matter what you leave beyond the new length.

解法1:

还是双指针。用一个慢指针p来记录下一个需要插入的位置。一开始快慢指针都在一起。然后比较快指针p所对应的元素与p-2所对应的元素。
C++

1

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Solution {
public int removeDuplicates(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
if (nums.length <= 2) {
return nums.length;
}
int p = 2, i = 2;
while (i < nums.length) {
if (nums[i] != nums[p - 2]) {
nums[p++] = nums[i];
}
i++;
}
return p;
}
}