0
以下是我需要做的事情。將NSArray1的對象與NSArray2進行比較
NSArray中有10個對象
NSArray2具有相同的10個對象,但在不同的索引。
我需要比較如果NSArray1索引:5匹配NSArray2索引:5如果不告訴我,如果對象已在NSArray2中向上或向下移動,對於該數組內的每個其他對象相同。
對象具有以下屬性:id和name。
有關我如何完成此任務的任何建議?
以下是我需要做的事情。將NSArray1的對象與NSArray2進行比較
NSArray中有10個對象
NSArray2具有相同的10個對象,但在不同的索引。
我需要比較如果NSArray1索引:5匹配NSArray2索引:5如果不告訴我,如果對象已在NSArray2中向上或向下移動,對於該數組內的每個其他對象相同。
對象具有以下屬性:id和name。
有關我如何完成此任務的任何建議?
如果你有內存的話,你可以建立從對象的ID其指數在陣列1的地圖,然後掃描陣列2和比較,如:
NSMutableDictionary *map = [[NSMutableDictionary alloc] init];
for (NSUInteger j = 0; j < array1.count; j++) {
id object = array1[j];
map[object.id] = @(j);
}
for (NSUInteger j = 0; j < array2.count; j++) {
id object = array2[j];
id identifier = object.id;
NSUInteger array1Index = [map[identifier] unsignedIntegerValue];
// Compare array1Index to j here.
}
這會讓你有一個比較運行時間與陣列中的對象數量一樣增長,但請注意,您必須花費一些額外的RAM來製作該map
。如果你願意花更多的時間,你可以用唯一不變的RAM成本比較:
for (NSUInteger j = 0; j < array1.count; j++) {
id object = array1[j];
NSUInteger k = [array2 indexOfObject:object];
// Compare j and k, note that k could be NSNotFound.
}
,並應具有變得像數組數的乘積運行時間。
這個家庭作業?你是通過姓名還是身份證來比較他們? – PCoder123
這聽起來像是人們在面試中會遇到的那種問題。 –
沒有它實際上是我自己的應用程序,我需要這個:p – user3504848