首页 > 编程语言 >L44---506.相对名次(java)--排序

L44---506.相对名次(java)--排序

时间:2024-06-09 15:29:07浏览次数:25  
标签:index 名次 L44 -- --- score result Medal 运动员

1.题目描述
给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。

运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况:

名次第 1 的运动员获金牌 “Gold Medal” 。
名次第 2 的运动员获银牌 “Silver Medal” 。
名次第 3 的运动员获铜牌 “Bronze Medal” 。
从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 “x”)。
使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况

2.知识点

(1)首先创一个结果数组,和一个索引数组
(2)索引数组起到标记的作用,比如[85,92,88,76,95],
用index[i]=[i]; 让数组变成了[0,1,2,3,4]
(3)接着用自定义比较器,对index里的数字,按照分数进行比较,按从高到低排序,得到排序后的索引数组[4,1,2,0,3]
这一步比较关键
也就是Arrays.sort(index,(a,b)->Integer.compare(score[b],score[a]));
(4)然后通过一个for循环进行遍历赋值。
3.代码实现

class Solution {
    public String[] findRelativeRanks(int[] score) {
   
    
    int n=score.length;
    
   String[] result=new String[n];


   Integer[] index=new Integer[n];

   for(int i=0;i<n;i++)
   {
    index[i]=i;
   }

   //根据分值对索引数组进行排序
   Arrays.sort(index,(a,b)->Integer.compare(score[b],score[a]));
   //按照升序排序
   for(int i=0;i<n;i++)
   {
    if(i==0)
    {
    result[index[i]]="Gold Medal";
    }
    else if(i==1)
    {
        result[index[i]]="Silver Medal";
    }
    else if(i==2)
    {
        result[index[i]]="Bronze Medal";
    }
    else
    {
        result[index[i]]=String.valueOf(i+1);
    }
   }
    
    return result;

    }   
}

标签:index,名次,L44,--,---,score,result,Medal,运动员
From: https://blog.csdn.net/zsysingapore/article/details/139527586

相关文章

  • Fortran入门(四)期末复习|数组
    一:字符数据处理1:字符关系字符比较是按ASCII码值的大小进行比较的。排列的基本规则是:空格字符最小,数字比字母小,大写字母比小写字母小。字符型数据比较遵循:(1)单个字符按ASCII比较(2)两个相同长度的字符串的比较是将字符串的字符从左到右逐个比较,以第一对不同字符的比较结果为准......
  • Fortran入门(一)(期末复习)
     一:基本数据类型1:整型数据(INTEGER)整型数据类型的性质整型数据类别名类别参数 字节数字节型11短整型22基本整型44长整型88这里需要注意:类别参数为1的整型变量,其有符号数的表示范围是-128~127在FORTRAN95中,数字串后有一个可任选的下划线后再跟类别参数,例如32_2......
  • SpringBoot3集成Knife4j生成接口文档
    导入依赖<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.4.0</version></dependency>注意:SpringBoot......
  • Python: 2d arry
     score=[[58,80,74,90,45,82],[71,70,64,85,50,86],[87,63,65,84,62,83],[91,66,67,92,65,90],[83,74,81,82,57,82]]k=0whilek<5:subavg=0a=0whilea<6:subavg......
  • jest 单元测试
    jest单元测试关键词解释describe用于对测试用例进行逻辑分组,使得测试代码更加有组织、易读expect用于验证代码的行为是否符合预期test用于定义测试用例toBe相当于===,即全等toEqual相当于==运行命令//index.test.jsdescribe('group',()=>{test('sumfunction......
  • 阅读习惯2
    参考书单https://weread.qq.com/misc/booklist/3107758_7sb8Fs2Hv,从中选择阅读,养成阅读习惯提交微信读书(或其他平台)目前的与上面书单有关的读书数据(总时长,册数,笔记数等)的截图总结本学期的收获,新增的总时长,册数笔记等,谈谈本学期收获,养成良好的阅读习惯了吗?会一直坚持阅读吗?阅......
  • 2024年新高考1卷精选试题解答
    **(2024年新高考1卷18题)**已知函数$f(x)=\ln\fracx{2-x}+ax+b(x-1)^{3}$.(1)若$b=0$,且$f'(x)\geqslant0$,求$a$的最小值;(2)证明:曲线$y=f(x)$是中心对称图形;(3)若$f(x)>-2$当且仅当$1<x<2$,求$b$的取值范围.**解.**函数$f(x)$的定义域为$(0,2)$.(1)若$b=0$,则$f\left......
  • PyQT5之设置窗口控件风格
    设置窗口控件风格QApplication.setStyle(...)窗口可以显示三种风格:['windowsvista','Windows','Fusion']importsysfromPyQt5.QtCoreimport*fromPyQt5.QtGuiimport*fromPyQt5.QtWidgetsimport*#print(QStyleFactory.keys())classWindow......
  • 第二次Blog总结
    一、前言经过题目集4至题目集6的学习与实践,我深刻体会到了面向对象编程(OOP)的魅力与挑战。本次总结将重点围绕三次题目集中的7-1题目,从知识点、题量、难度等方面进行分析与总结。知识点题目集4至6中的7-1题目,无一不紧扣面向对象编程(OOP)的核心概念。这些题目不仅深入探索了类的继......
  • JS事件循环
    文章目录前言一、浏览器的进程与线程二、渲染主线程三、关于异步总结前言事件循环,不管是在面试还是在工作中都至关重要,属于学前端就绕不开的一个知识点,本篇文章将讲解JS事件循环的全部流程。文章借鉴了渡一大师课中关于事件循环的课程思路,对此表示感谢。一、浏览......