数组 #1 中的最高 4 个数字存储在另一个数组中

Posted

技术标签:

【中文标题】数组 #1 中的最高 4 个数字存储在另一个数组中【英文标题】:Highest 4 Numbers From Array #1 To Store In Another Array 【发布时间】:2012-05-23 11:16:15 【问题描述】:

所以我这里涉及三个不同的数组...

我正在循环通过 golferThreeIcons (NSMutableArray),我正在尝试获取最高的 4 个结果(golferThreeIcons 包含 #'s 作为字符串)并将它们存储到 topFourIconsNum (NSMutableArray) 中,然后我计划存储 id数组 topFourIconsId (NSMutableArray) 中的最高数字。

一个棘手的事情是 golferThreeIcons 从 99 开始,但我希望它像零一样。所以数字 99 不应该被添加到任何一个数组中......

示例: GolferThreeIcons 2,1,5,3,9

在循环完成后,我希望它显示类似这样的内容......

topFourIconsId 0,2,3,4 --- 0 对应 GolferThreeIcons 中的 2 --- 2 对应 Golfer 三个图标中的 5

topFourIconsNum 2,5,3,9 ----(任意顺序只要对应前四个图标id)

NSMutableArray *topFourIconsId = [NSMutableArray arrayWithObjects: @"0", @"0", @"0", @"0", @"0" ,nil];
NSMutableArray *topFourIconsNum = [NSMutableArray arrayWithObjects: @"0", @"0", @"0", @"0", @"0" ,nil];
int *ids = 0;
                for (NSString *s in golferThreeIconCounter) 
                    if(s != @"0") 
                        int sint = [s intValue];
                        int *idn = 0;
                        for(NSString *n in topFourIconsNum) 
                            int nint= [n intValue];
                            if(sint == 99 && nint == 0) 
                                NSString *idstring = [NSString stringWithFormat:@"%d", ids];
                                NSString *sintstring = [NSString stringWithFormat:@"%d", sint];
                                [topFourIconsId replaceObjectAtIndex:idn withObject:idstring];
                                [topFourIconsNum replaceObjectAtIndex:idn withObject:sintstring];
                                NSLog(@"IN %@",sintstring);
                                break;
                            
                            else 
                                if (sint > nint) 
                                    NSString *idstring = [NSString stringWithFormat:@"%d", ids];
                                    NSString *sintstring = [NSString stringWithFormat:@"%d", sint];
                                    [topFourIconsId replaceObjectAtIndex:idn withObject:idstring];
                                    [topFourIconsNum replaceObjectAtIndex:idn withObject:sintstring];
                                    NSLog(@"IN %@",sintstring);
                                    break;
                                
                            
                            idn++;
                        
                    
                    ids++;
                

【问题讨论】:

【参考方案1】:

只是一个疯狂的想法

将你的 golferThreeIcons 放在一个 NSDictionary 中,数组索引作为键,数组值作为值,然后根据它们的值对键进行排序:

NSDictionary *dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"2", @"1", @"5", @"3", @"9", nil] forKeys:[NSArray arrayWithObjects:@"0", @"1", @"2", @"3", @"4", nil]];
NSArray *sortedKeys = [dict keysSortedByValueUsingSelector:@selector(caseInsensitiveCompare:)];

NSLog([sortedKeys description]);

【讨论】:

以上是关于数组 #1 中的最高 4 个数字存储在另一个数组中的主要内容,如果未能解决你的问题,请参考以下文章

66-加一

66. 加一

66. 加一

3.20作业解答

66. 加一

LeetCode66 加一