1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 随笔-相对名次

随笔-相对名次

时间:2019-05-03 00:41:02

相关推荐

随笔-相对名次

题目:给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”(“Gold Medal”, “Silver Medal”, “Bronze Medal”)。

(注:分数越高的选手,排名越靠前。)

示例 1:

输入: [5, 4, 3, 2, 1]

输出: [“Gold Medal”, “Silver Medal”, “Bronze Medal”, “4”, “5”]

解释: 前三名运动员的成绩为前三高的,因此将会分别被授予 “金牌”,“银牌”和“铜牌” (“Gold Medal”, “Silver Medal” and “Bronze Medal”).

余下的两名运动员,我们只需要通过他们的成绩计算将其相对名次即可。

提示:

N 是一个正整数并且不会超过 10000。

所有运动员的成绩都不相同。

思路:需要先将原数组拷贝一次,对拷贝的数组进行一次排序,从后往前依次是第一,第二等等,nums1.length减去坐标就是排名。所以对于前三名我们特殊判断。后面的根据值相等找到坐标,根据nums1坐标在计算排名。

代码实现:

class Solution {public String[] findRelativeRanks(int[] nums) {String [] s=new String[nums.length];int [] nums1=Arrays.copyOf(nums,nums.length);Arrays.sort(nums1); //排序for(int i=0;i<nums.length;i++){//得到每个成绩对应的名次if(nums[i]==nums1[nums1.length-1]){s[i]="Gold Medal";}else if(nums[i]==nums1[nums1.length-2]){s[i]="Silver Medal";}else if(nums[i]==nums1[nums1.length-3]){s[i]="Bronze Medal";}else{for(int j=0;j<nums1.length-3;j++){if(nums[i]==nums1[j]){s[i]=Integer.toString(nums1.length-j); //普通排名坐标break;}}}}return s;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。