本文主要是介绍Remove Duplicates from Sorted II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:一个升序的数组,含有重复的元素,删除数组中重复的元素,使其最多重复两次,返回修改后数组的长度
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]
. 思路:每次和已经记录的最后一个数组元素比较,如果重复就跳过,否则将其加入数组末尾。同时设置一个变量跟踪最后一个元素的重复度。
代码:
int removeDuplicates(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (n < 2) return n;
int len = 1;
bool duplicated = false;
for(int i = 1; i < n; ++i) {
if(A[i] != A[len - 1]) {
A[len++] = A[i];
duplicated = false;
} else if (!duplicated) {
A[len++] = A[i];
duplicated = true;
}
}
return len;
}
这篇关于Remove Duplicates from Sorted II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!