删除有序数组中的重复项。要求空间复杂度O(1),++时间复杂度O(n)

网友投稿 577 2022-09-04

删除有序数组中的重复项。要求空间复杂度O(1),++时间复杂度O(n)

删除有序数组中的重复项。要求空间复杂度O(1),++时间复杂度O(n)

删除有序数组中的重复项。要求空间复杂度O(1),++时间复杂度O(n) 示例+1: 输入:+[1,1,2] 输出:+[1,2]

示例+2: 输入:+[0,0,1,1,1,2,2,3,3,4] 输出:+[0,1,2,3,4] 不啰嗦直接上具体算法代码

-(NSMutableArray *)cancelRepeatWithArr:(NSMutableArray *)arr{ NSLog(@"过滤前 arr:%@",arr); if(arr && [arr isKindOfClass:[NSArray class]] && arr.count > 0) { NSInteger breakValue = 0; NSInteger processCount = 0; while (-1 != breakValue) { BOOL flag = NO; NSInteger i = 0; for(; i < arr.count;i++) { NSInteger sno = [self checkSameValueWithArr:arr number:arr[i] row:i]; if(-1 != sno) { [arr removeObjectAtIndex:sno]; flag = YES; break; } } if(!flag) { breakValue = -1; } } NSLog(@"过滤后 arr:%@",arr); return arr; } else { NSLog(@"过滤前 arr:%@",arr); return nil; }}-(NSInteger)checkSameValueWithArr:(NSMutableArray *)arr number:(NSNumber *)number row:(NSInteger)row{ if(!arr || ![arr isKindOfClass:[NSArray class]] || arr.count <= 1) { return -1; } for(NSInteger i = row+1; i < arr.count;i++) { if(number.integerValue == [arr[i] integerValue]) { return i; } } return -1; }

测试代码:

[self cancelRepeatWithArr:[NSMutableArray arrayWithArray:@[@1,@1,@2]]]; [self cancelRepeatWithArr:[NSMutableArray arrayWithArray:@[@0,@0,@1,@01,@1,@01,@2,@2,@3,@3,@4]]];

打印结果:

2021-11-09 16:42:09.452302+0800 LChat_Routes[39682:2272818] [RC:LCChatSessionInputBarControl]pluginItemInfoList count:==============> 0--TIME:16:42:09.454000+0800【FILE:LCConversationViewController.m--LINE:515】FUNCTION:-[LCConversationViewController cancelRepeatWithArr:]过滤前 arr:[ 1, 1, 2]--TIME:16:42:09.454000+0800【FILE:LCConversationViewController.m--LINE:540】FUNCTION:-[LCConversationViewController cancelRepeatWithArr:]过滤后 arr:[ 1, 2]--TIME:16:42:09.454000+0800【FILE:LCConversationViewController.m--LINE:515】FUNCTION:-[LCConversationViewController cancelRepeatWithArr:]过滤前 arr:[ 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4]--TIME:16:42:09.454000+0800【FILE:LCConversationViewController.m--LINE:540】FUNCTION:-[LCConversationViewController cancelRepeatWithArr:]过滤后 arr:[ 0, 1, 2, 3, 4]

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:大牛是怎么思考设计SQL优化方案的?
下一篇:实时动态实现省市区三级联动选择器
相关文章

 发表评论

暂时没有评论,来抢沙发吧~