首页 > 代码库 > [Leetcode] Remove Duplicates From Sorted Array II (C++)

[Leetcode] Remove Duplicates From Sorted Array II (C++)

题目:

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

Tag:

Array; Two Pointers

体会:

继续是quicksort中partition函数的改写。和Remove Duplicates From Sorted Array只有一处变化。这次的变化是第10处的那个判断条件多了一部分 A[len - 1] != A[i] 。从A[0]到A[len]是满足题意要求的部分, 如果现在正在检查的这个element已经在A[0]-A[len]出现过了,但是只要它在最近的两个中没有出现,还是可以加到现在的部分中的。

 1 class Solution { 2     public: 3         int removeDuplicates(int A[], int n) { 4             // length of satisfied part 5             int len = -1; 6             for (int i = 0; i < n; i++) { 7                 // if it is unique to current satisfied part  8                 // or it has not shown within last two positions 9                 // in current satisfied part10                 if (A[i] != A[len] || A[len - 1] != A[i]) {11                     len++;12                     A[len] = A[i];13                 }14             }15             return len + 1;16         }17 };

 

[Leetcode] Remove Duplicates From Sorted Array II (C++)