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.
Subscribe to see which companies asked this question.
移除重复的元素,可以允许最多两次重复元素的存在;与上一题相比,可以用一个计数器count,记录重复的个数,重复个数大于2的情况下,则移除元素。
public class RemoveDuplicates2 { public static void main(String[] args) { int[] nums = {1,1,1,1,1,3}; RemoveDuplicates2 r=new RemoveDuplicates2(); System.out.println(r.removeDuplicates(nums)); } public int removeDuplicates(int[] nums) { if (nums.length == 0) { return 0; } int j = 0; int count = 0; for (int i = 1; i < nums.length; i++) { if (nums[j] == nums[i]) { count++; if (count <2) { nums[++j] = nums[i]; } }else { nums[++j] = nums[i]; count = 0; } } return j + 1; } }