您的位置:首页 > 其它

Leetcode Remove Duplicates from Sorted Array II

2014-06-21 17:46 357 查看
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]
.

典型的两指针问题

两个指针指向初始位置,一个指针i开始遍历,记录出现相同数的个数

如果遍历的指针i等于其前面的指针index且cnt个数超过两个,则继续移动遍历的指针

如果遍历的指针i等于其前面的指针index且cnt个数恰好为2,则更新index指针

如果遍历的指针不等于其前面的指针index,则出现相同的数,更新index指针,且清零计数器

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int removeDuplicates(int A[], int n){
if(n < 3) return n;
int index = 0, cnt = 0;
for(int i = 1; i < n; ++ i){
if(A[i] == A[index] && cnt < 2){
A[++index] = A[i];
cnt = 2;
}else if(A[i] != A[index]){
A[++index] = A[i];
cnt =0 ;
}
}
return index+1;
}

int main(){
int A[] = {1,1,1,2,2,3};
cout<<removeDuplicates(A,6)<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: