D115 506. Relative Ranks
题目链接
题目分析
给定一个积分表,对前三名显示Gold/Silver/Bronze Medal,剩余的直接显示名次。
思路
首先保留索引给积分表排序,再用range生成名次把前三条替换成指定文字。之后使用array_combine和ksort把两者结合就好了。
最终代码
<?php
class Solution {
/**
* @param Integer[] $nums
* @return String[]
*/
function findRelativeRanks($nums) {
arsort($nums);
$sortedKeys = array_keys($nums);
$amount = count($nums);
$rankName = array_merge(["Gold Medal", "Silver Medal", "Bronze Medal"],range(4, $amount));
$rankName = array_slice($rankName,0,$amount);
$rank = array_combine($sortedKeys, $rankName);
ksort($rank);
$orderedRank = array_map(function($value){
return strval($value);
},$rank);
return $orderedRank;
}
}
若觉得本文章对你有用,欢迎用爱发电资助。