IncredibleThings

导航

LeetCode-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.

感觉这道题的oa有点问题。。。先这样吧

 

public class Solution {
    public int removeDuplicates(int[] nums) {
        
        int res=0;
        int len=nums.length;
        int set=0;
        
        for(int i=0; i<len; i++){
            if(i==0){
                set++;
                res++;
            }
            else{
                if(nums[i]==nums[i-1]){
                    set++;
                    if(set<=2){
                        res++;
                    }
                }
                else{
                    set=1;
                    res++;
                }
            }

        }
        return res;
    }
}

 

要in place 改变原数组:

public class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums==null || nums.length==0){
            return 0;
        }
        int startPosition=0;
        boolean isRepeated=false;
        for(int i=1; i<nums.length; i++){
            if(nums[i] != nums[startPosition]){
                isRepeated=false;
                startPosition++;
                nums[startPosition] = nums[i];
            }
            else{
                if(isRepeated == false){
                    startPosition++;
                    nums[startPosition]=nums[i];
                    isRepeated=true;
                }
            }
        }
        return startPosition+1;
        
    }
}

 

posted on 2016-10-05 03:33  IncredibleThings  阅读(91)  评论(0编辑  收藏  举报