从排序数组中删除重复项 (2)--- 线性表

【描述】

进一步处理“删除重复项”:如果最多允许重复两次怎么办?

例如,给定排序数组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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值