每日一题6.29

问题:

Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twice 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.

这个题将前面的题目上升到新高度。可以允许最多出现两次。

利用count记录出现的次数。(count从0开始)last可以当做一个指针,不断向前移动,如果出现重复数字p对应的指针跟着向前移动即可。

public class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length==0 ) return 0;
        int p=0;
        int last=nums[0],count=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=last){
                last=nums[i];
                count=0;
            }
            if(count<2){
                nums[p]=nums[i];
                p++;
                count++;
            }
        }
        return p;


    }
}

猜你喜欢

转载自blog.csdn.net/q_all_is_well/article/details/80871328