数组索引列表;查找array [index]重复的索引

时间:2011-06-18 17:19:45

标签: objective-c arrays

我有一个数组(让它称之为indexArray)索引到另一个数组(称为sequence)。我想扫描原始数组sequence,以查看这些索引的值是否重复。例如,如果sequence[indexarray[(value at index 1)]]中的值等于sequence,那么我想从indexArray中删除索引值。最后,我将得到一个只包含其值不重复的索引的数组。

1 个答案:

答案 0 :(得分:5)

接近它的一种方法是:

NSCountedSet *countedSet = [NSCountedSet setWithArray:sequence];
for (NSNumber *index in indexarray) {
    id object = [sequence objectAtIndex:[index integerValue]];
    NSUInteger objectCount = [countedSet countForObject:object];
    if (objectCount > 1) {
        NSLog("%@ is duplicate", object);
    }
}

效果:与手动检查每个对象的重复项相比,其操作时间约为O(n*m),(nmO(n+m)为数组“尺寸。”使用NSCountedSet会将其降低到大约{{1}}的操作时间。