2015-09-26 2 views
0

Предположим, что у меня есть целое число 10. И мой NSMutableArray содержит от 1 до 20 значений. Поэтому я должен найти максимум 10 из NSMutableArray, так как ответ равен 11.Сравните целочисленное значение с NSMutableArray и найдите максимальное значение

Я знаю, как найти максимальное число.

int max = [[numbers valueForKeyPath:@"@max.intValue"] intValue]; 

Но я не знаю, как сравнить и найти максимальное число из массива. Я могу использовать для цикла, чтобы найти, но есть ли более быстрое решение, подобное выше?

+0

Смотрите, что надеюсь, что это поможет .. http://stackoverflow.com/questions/25238072/find-the-largest-number-from-nsarray- that-is-less-than-the-given-number –

+0

Значит, вы хотите найти максимальное число сразу после 10 из массива ??? –

+0

Спасибо @PrashantTukadiya ..... –

ответ

3
NSArray *_timesArray = @[@1, @23, @57, @59, @120]; 
NSTimeInterval currentTime = 109; 
NSInteger playerTime=currentTime; 
NSUInteger index = [_timesArray indexOfObject:@(playerTime) 
           inSortedRange:NSMakeRange(0, _timesArray.count-1) 
             options:NSBinarySearchingFirstEqual | NSBinarySearchingInsertionIndex 
           usingComparator:^(id a, id b) { 
            return [a compare:b]; 
           }]; 
NSLog(@"Index: %lu", (unsigned long)index); 

ваш ответ 4;

2

Предположим, что ваш массив подобен этому.

NSMutableArray *numbers = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20", nil]; 

И объявите свой номер следующим образом.

int max = 11; 
int find; 

Здесь max является вашей статической декларацией. И найти максимальное количество ваших результатов.

for(int i = 0;i<numbers.count;i++) 
{ 
    if(max < [[numbers objectAtIndex:i]intValue]) 
    { 
     find = [[numbers objectAtIndex:i]intValue]; 
     NSLog(@"%d",find); 
     break; 
    } 
} 

Сделайте это.

+0

Я не хочу использовать для цикла .... –

0

Попробуйте это:

NSMutableArray *numbers = [[NSMutableArray alloc] initWithObjects:@"20", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11", @"12", @"13", @"14", @"15", @"16", @"17", @"18", @"19", @"20", nil]; 
    int minimum = 10; 
    int nextNumber = [[numbers valueForKeyPath:@"@max.intValue"] intValue]; 

    for(int i = 0;i<numbers.count;i++) 
    { 
     if([[numbers objectAtIndex:i] intValue] > minimum) { 
      if([[numbers objectAtIndex:i] intValue] < nextNumber) { 
       nextNumber = [[numbers objectAtIndex:i] intValue]; 
      } 
     } 
    } 

    NSLog(@"Maxmimum number right after %d from whole array is: %d",minimum, nextNumber); 
Смежные вопросы