题目:

删除排序数组中的重复数字 II

跟进“删除重复数字”:

如果可以允许出现两次重复将如何处理?

样例

给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]

解题:

在这里看到的

与上一题方法很类似,这里保存相同元素长度小于2的保存在原来的数组中

很巧妙

Java程序:

public class Solution {
    /**
     * @param A: a array of integers
     * @return : return an integer
     */
    public int removeDuplicates(int[] nums) {
        // write your code here
        int i = 0,j;
        int numsLen = nums.length;
        int cur=0;
        while(i<numsLen){
            for( j=i;j<numsLen;j++){
                if(nums[i]!=nums[j])
                    break;
            
            if((j-i+1)<=2) // 只记录长度小于等于2 的下标对应的元素
                nums[cur++] = nums[i];
            }
            i = j;// 下一个不相同元素开始
        }
        return cur;
    }
}
View Code

相关文章: