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


思路:总是先将遇到的第一个新元素加入,然后看是否有重复,若出现重复则将最后一个重复的也加入,忽略掉中间重复的部分,若没有出现重复,则继续准备处理下一个新元素。

//CODE

class Solution {
public:
	int removeDuplicates(int A[], int n) {
		if(n <= 1) return n;
		int cur_index = 0;
		int i  = 0;
		while(i < n)
		{
			A[cur_index] = A[i];
			++i;
			if(i < n && A[cur_index] == A[i])
			{
				while (i < n &&  A[cur_index] == A[i])
				{
					++i;
				}
				A[++cur_index] = A[i - 1];
				++cur_index;
			}
			else /*if(i < n)*/
				++cur_index;
		}
		return cur_index;
	}
};

应该有更好更简洁的方式去实现,这部分工作就留给各位看官了,偷次懒,O(∩_∩)O~

你可能感兴趣的:(LeetCode,Algorithm,C++,Matrix)