现在的位置: 首页 > 综合 > 正文

LeetCode题解:Remove Duplicates from Sorted Array I and II

2019年07月25日 ⁄ 综合 ⁄ 共 883字 ⁄ 字号 评论关闭

Remove Duplicates from Sorted Array II

Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?

For example,
Given sorted array A = [1,1,1,2,2,3],

Your function should return length = 5, and A is now [1,1,2,2,3].

Remove Duplicates from Sorted Array

Given a sorted array, remove the duplicates in place such that each element appear only
once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array A = [1,1,2],

Your function should return length = 2, and A is now [1,2].

思路:

维护两个指针,一个指向相同元素只出现两次的已经处理过的数据部分,另一个指向现在正在处理的数据。

题解:问题2(问题1的解是问题2的特殊情况)

class Solution {
public:
    int removeDuplicates(int A[], int n) {
        if (n <= 1)
            return n;
        
        int iter = 0;
        int unique_iter = 0;
        int curr_value = A[0];
        int curr_count = 1;
        
        for(iter = 1; iter < n; ++iter)
        {
            if (A[iter] == curr_value)
            {
                // more than 2 occurance?
                if (++curr_count > 2)
                    continue;
            }
            else
            {
                curr_value = A[iter];
                curr_count = 1;
            }
            A[++unique_iter] = curr_value;
        }
        return unique_iter + 1;
    }
};


抱歉!评论已关闭.