查找NSArray(或NSMutableArray)中的最大元素

Bre*_*ett 1 iphone objective-c ios4

我在导航时遇到了一些麻烦NSArray.

我的阵列:

Element[0] = "ElementA"
Element[1] = "ElementA"
Element[2] = "ElementA"
Element[3] = "ElementA"
Element[4] = "ElementB"
Element[5] = "ElementC"
Run Code Online (Sandbox Code Playgroud)

Objective-C中是否有任何方法可以帮助我找到"中位数"元素?在这种情况下,"中位数"将是"ElementA",或者是出现最大次数的值.

在C#中,这将是一次调用,但我找不到Objective-C中的等价物.

非常感谢,布雷特

Dav*_*ong 8

这是我如何做到的:

NSArray * elements = ...; //your array of elements:
NSCountedSet * counts = [NSCountedSet setWithArray:elements]:
id modeObject = nil;
NSUInteger modeCount = 0;
for (id element in counts) {
  if ([counts countForObject:element] > modeCount) {
    modeCount = [counts countForObject:element];
    modeObject = element;
  }
}

NSLog(@"element with highest frequency: %@", modeObject);
Run Code Online (Sandbox Code Playgroud)

An NSCountedSet也是一个NSMutableSet记住它的元素被添加到数组的次数的一个.

  • 这应该是公认的答案.不是我的. (2认同)