为了账号安全,请及时绑定邮箱和手机立即绑定

我现在做的就是用遍历生成的,有没有什么办法可以高效完成的。

我现在做的就是用遍历生成的,有没有什么办法可以高效完成的。

慕码人8056858 2023-04-16 21:17:19
我有这样一个数组NSArray *a = [NSArray arrayWithObjects:@"a", @"b", @"c", @"a", @"b", @"d", nil];首先需要去掉重复的,活的这样的NSArray *a = [NSArray arrayWithObjects:@"a", @"b", @"c", @"d", nil];另外的需求就是要生成这样的数组NSArray *a = [NSArray arrayWithObjects:     [NSDictionary arrayWithObjectsAndKeys:@"2", @"a", nil],     [NSDictionary arrayWithObjectsAndKeys:@"2", @"b", nil],     [NSDictionary arrayWithObjectsAndKeys:@"1", @"c", nil],     [NSDictionary arrayWithObjectsAndKeys:@"1", @"d", nil],    nil];键是唯一值,值是数量
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

自己实现吧,也不算复杂。去重主要有两种算法:

1. 元素个数不多(小于1M个都可以算),先排序(O(NlogN)复杂度),然后顺序遍历一次即可去重

2. 元素个数相当多(多余1M),哈希去重,然后收集起来。


查看完整回答
反对 回复 2023-04-20
?
当年话下

TA贡献1890条经验 获得超9个赞

如果结果的顺序无所谓,可以用Key Value Coding:

NSArray *result = [a valueForKeypath:@"@distinctUnionOfObjects.self"];

如果希望能保持原来的顺序,在iOS 5.0或OS X 10.7以上版本,可以用:

NSArray *orderedResult = [[NSOrderedSet orderedSetWithArray:a] array]

但这只是开发高效,运行效率不一定比自己实现的快。


查看完整回答
反对 回复 2023-04-20
  • 2 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信