[leedcode 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 1122 and 3. It doesn't matter what you leave beyond the new length.

public class Solution {
    public int removeDuplicates(int[] nums) {
        //题意与Remove Duplicates from Sorted Array不同,说明需要一个变量count代表重复的次数
        //start代表符合要求的最大索引,遍历数组时,需要与start位置上的进行比较,如果不等,直接赋值移位
        //如果相等,需要判断次数是否满足要求,如果不超过2,则依旧赋值移位,如果超过,直接continue不理会
        if(nums==null||nums.length<1) return 0;
        int start=0;
        int count=1;
        for(int i=1;i<nums.length;i++){
          if(nums[i]!=nums[start]){
              nums[++start]=nums[i];
              count=1;
          }else if(count<2){
              count++;
              nums[++start]=nums[i];
            }
        }
        return start+1;
    }
}

 

你可能感兴趣的:(remove)