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

use*_*903 0 arrays objective-c

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

Reg*_*ent 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

性能:与手动检查每个对象的重复项相比,其操作时间大约O(n*m)是(使用n,m作为数组的大小).使用NSCountedSet会将其降低到大约的操作时间O(n+m).