2013-07-17 118 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