1

我想用给定数量的零初始化 NSArray 。我需要它来创建一个计数器数组,并在函数结束时返回具有最高值的计数器的索引。

所以问题是如何初始化给定长度的零的 NSArray ?有1-2行的好方法吗?也许有更好的方法来计算对象?你会怎么做?

谢谢!

UPD:这是我现有功能的代码。它返回具有相同等级的卡片的最大数量。

+ (int)ranksMatched:(NSArray *)cards
{
    NSMutableArray *ranksCounter = [[NSMutableArray alloc] initWithCapacity:[PlayingCard maxRank]];
    for (int i = 0; i < [PlayingCard maxRank]; ++i) {
        [ranksCounter addObject:[NSNumber numberWithInt:0]];
    }
    int maxIndex = 0;
    int maxCount = 0;
    for (PlayingCard *card in cards) {
        int currentCount = [ranksCounter[card.rank] intValue] + 1;
        if (maxCount < currentCount) {
            maxCount = currentCount;
            maxIndex = card.rank;
        }
    }
    return maxCount;
}
4

1 回答 1

1

我猜您希望按等级对卡片进行分组并返回最大组的等级:

+ (int)ranksMatched:(NSArray *)cards
{
    NSCountedSet *ranks = [NSCountedSet setWithArray:[cards valueForKeyPath:@"rank"]];

    NSNumber *maxRank = nil;
    NSUInteger maxCount = 0;

    for (NSNumber *rank in ranks) {
        NSUInteger rankCount = [ranks countForObject:rank];
        if (rankCount > maxCount) {
            maxRank = rank;
            maxCount = rankCount;
        }
    }

    return [maxRank intValue];
}

假设你有

@interface PlayingCard : NSObject

@property (nonatomic, assign) int rank;

…

@end

并且cards是一个数组PlayingCard

于 2013-09-10T01:12:44.137 回答