2013-07-17 77 views
5

假设您有NSArray重复项@[1,2,3,1,1,2,4,5,6];在NSArray中查找重复项

查找所有重复;这可能是伪代码。这是一个比基金会框架更多的算法问题(不使用NSSet)问题。

+2

看一看NSCountedSet。你可以从你的数组中创建其中的一个,然后循环查看哪些数的计数大于1. – rdelmar

+0

我从来不知道NSArray可以直接存储Integer值。 :O –

回答

12

使用NSCountedSet 和只打印返回一个数> 1 countForObject:方法

参见this以获取更多信息

19

如@Lithu所描述的,使用NSCountedSet的元素,请参阅下面的代码。

NSArray *arr = [[NSArray alloc]initWithObjects:@(1),@(1),@(2), @(1),nil]; 
NSCountedSet *cs = [[NSCountedSet alloc] initWithArray:arr]; 
NSLog(@"object count greater than 1 are"); 
for(NSNumber *num in cs){ 
    if([cs countForObject:num]>1) 
    NSLog(@"%@",num); 
} 
+0

这太棒了! :) – Hemang