我正在处理一些面试问题并遇到过这个问题。我完全理解了代码,除了下一行的内容:
time_t
鉴于N名运动员的得分,找到他们的相对等级和得分最高的三人,谁将获得奖牌:"金牌","银牌&#34 ;和"铜牌" 。
示例1:输入:[5,4,3,2,1]输出:["金牌","银牌 奖章","铜奖"," 4"," 5"]说明:前三 运动员获得前三名最高分,因此他们获得了金奖", "银牌"和"铜牌"。对于左边的两名运动员,你 只需要根据他们的分数输出他们的相对等级。
YYYY-MM-DD
答案 0 :(得分:1)
这是调用Arrays.sort
方法使用带有lambda表达式定义的pair
对数组Comparator
进行排序。只要类型推断可以确定我们需要一个只需要定义一个函数的类的对象,就可以使用lambda表达式。
有关语法的详细信息,请参阅http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html#section2。
在引擎盖下,该函数将在数组中使用成对元素多次调用,并将从"最小的"最大的"根据比较功能。如果函数返回负数,则a
将被视为"更大"比b
,如果它返回正数,那么a
是"更小"比b
,如果0
那么它就是平局。
这里的技巧是比较函数返回b[0] - a[0]
,这是与通常相反的方向。因此,它将从最大到最小排序。当然,最大的是金牌得主。其次是银,然后是青铜。