2011-06-18 17 views
0

インデックス(indexArrayと呼ぶ)を別の配列(sequence)に持っています。元の配列sequenceをスキャンして、これらのインデックスの値が重複しているかどうかを確認したいのですが。たとえば、に等しい値がsequenceにある場合、インデックス値をindexArrayから削除したいとします。最後に、値が繰り返されていないインデックスだけを持つ配列を作成します。それは、このことになる接近する配列へのインデックスのリスト。配列[インデックス]が複製されているインデックスを見つけよう

答えて

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); 
    } 
} 

性能:mが配列され、nで約O(n*m)の動作時間が手動で重複の各オブジェクトを、(検査と比較'サイズ)。NSCountedSetを使用すると、約O(n+m)の動作時間になります。

関連する問題