我有一个数组(让它称之为indexArray
)索引到另一个数组(称为sequence
)。我想扫描原始数组sequence
,以查看这些索引的值是否重复。例如,如果sequence[indexarray[(value at index 1)]]
中的值等于sequence
,那么我想从indexArray
中删除索引值。最后,我将得到一个只包含其值不重复的索引的数组。
答案 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)
,(n
为m
,O(n+m)
为数组“尺寸。”使用NSCountedSet会将其降低到大约{{1}}的操作时间。