Вот мое решение Objective-C для префиксного набора из Codility. 100% правильность и производительность.
Что можно изменить, чтобы сделать его еще более эффективным? (без использования кода c).
КАК ЭТО РАБОТАЕТ:
Каждый раз, когда я сталкиваюсь с числом в массиве, я проверяю, добавил ли я его в словарь.
Если это в словаре, то я знаю, что это не новый номер, поэтому не имеет значения в связи с проблемой. Если это новый номер, с которым мы еще не сталкивались, мне нужно обновить indexOftheLastPrefix до этой позиции массива и добавить его в словарь в качестве ключа.
Он использовал только один для цикла, поэтому занимает всего один проход. Код Objective-C довольно тяжелый, поэтому хотелось бы услышать о любых хитростях, чтобы сделать это быстрее. Тем не менее, он получил 100% за производительность.
int solution(NSMutableArray *A)
{
NSUInteger arraySize = [A count];
NSUInteger indexOflastPrefix=0;
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init];
for (int i=0; i<arraySize; i++)
{
if ([myDict objectForKey:[[A objectAtIndex:i]stringValue]])
{
}
else
{
[myDict setValue:@"YES" forKey:[[A objectAtIndex:i]stringValue]];
indexOflastPrefix = i;
}
}
return indexOflastPrefix;
}