我正在处理一个分配,在该分配中,我必须使用for循环在数组中找到最大值,而无需对其进行排序。我觉得到目前为止我已经接近正确,但是还不完全正确。下面是我到目前为止的代码示例。
NSArray *unsortedArray = @[ @2, @44, @11, @99, @35 ];
for (int i = 0; i < 4 ; i++) {
id number = [unsortedArray objectAtIndex:i];
id largestNumber = 0;
if (largestNumber < number) {
largestNumber = number;
NSLog(@"%@ is the largest number", largestNumber );
return 0;
}
}
现在,这仅返回该区域中的第一个值,然后循环停止,我是否将错误的值分配给maximumNumber和number?代码非常陌生,因此,我将不胜感激,并提供反馈和示例。
谢谢!
最佳答案
键值编码解决方案,无循环
NSArray *unsortedArray = @[ @2, @44, @11, @99, @35 ];
NSNumber *maxNumber = [unsortedArray valueForKeyPath:@"@max.self"];
NSLog(@"%@", maxNumber); // 99
参见Mattt Thompson的这篇有趣的文章:
KVC Collection Operators
关于Objective-C:如何在不排序的情况下找到数组中的最大值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34622118/