【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 A = [1,1,1,2,2,3],
Your function should return length = 5, and A is now [1,1,2,2,3].
双指针的思路,但是这里容许两个重复,所以判断条件修改一下。
1st (5 tries)
class Solution
{
public:
int removeDuplicates(int A[], int n)
{
// Start typing your C/C++ solution below
// DO NOT write int main() function
int i,j,k,count;
for(i = 0;i < n;++i)
{
count = 0;
int tmp = A[i];
j = i+2;
while(j < n&&A[j] == tmp)
{
j++;
count++;
}
if(count == 0)
;
else
{
for( k = j; k < n;++k)
{
A[k-count] = A[k];
}
}
n -= count;
}
return n;
}
};
2nd(3 tries)
class Solution {
public:
int removeDuplicates(int A[], int n) {
int start = 0;
for(int i = 0;i < n;i++) {
if(i == 0 || i == 1) {
A[start++] = A[i];
}
else {
//using start
if(A[i] == A[start-2]) {
}
else {
A[start++] = A[i];
}
}
}
return start;
}
};

浙公网安备 33010602011771号