【描述】
进一步处理“删除重复项”:如果最多允许重复两次怎么办?
例如,给定排序数组A=[1, 1, 1, 2, 2, 3];
函数应该返回length = 5,现在A是[1, 1, 2, 2, 3]
【分析】
1. 异常情况处理,数组长度不大于0;
2. 使用两个变量(index, num),一个变量(index)进行标记新数组下标,另一个变量(num)进行标记已出现重复次数;
3. 判断当前下标是否交换,交换情景如下:
情景一:当前下标数组值 不等于 index下标数组值,数组值替换,并且index++, num = 1;
情景二:当前下标数组值 等于 index下标数组值,num数量 小于limit限制值,数组值替换,index++,并且 num++;
情景三:当前下标数组值 等于 index下标数组值,num数量 不小于 limit限制值,num++;
注意:具体实现参考代码;
【代码实现】
注意:需要测试用例,评论留言;
//demo.h
int removeDuplicates_ex(int arr[], int len);
//demo.c
int removeDuplicates_ex(int arr[], int len)
{
int index