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.
解题思路:
Two pointers
Java code
九章算法
public class Solution { public int removeDuplicates(int[] nums) { if(nums == null || nums.length == 0) { return 0; } int cur = 0; int i, j; for(i = 0; i< nums.length;) { int now = nums[i]; for(j = i; j < nums.length; j++) { if(nums[j] != now){ break; } if(j - i < 2){ nums[cur++] = now; } } i = j; } return cur; } }
Reference:
1. http://www.jiuzhang.com/solutions/remove-duplicates-from-sorted-array-ii/