当前位置: 首页 > news >正文

[数组排序] 0506. 相对名次

文章目录

      • 1. 题目链接
      • 2. 题目大意
      • 3. 示例
      • 4. 解题思路
      • 5. 参考代码

1. 题目链接

506. 相对名次 - 力扣(LeetCode)



2. 题目大意

描述:给定一个长度为 n 的数组 score。其中 score[i] 表示第 i 名运动员在比赛中的成绩。所有成绩互不相同。

要求:找出他们的相对名次,并授予前三名对应的奖牌。前三名运动员将会被分别授予「金牌("Gold Medal")」,「银牌("Silver Medal")」和「铜牌("Bronze Medal")」。

说明:

  • n==score.length。
  • 1≤n≤104。
  • 0≤score[i]≤106。
  • score 中的所有值互不相同。


3. 示例

输入:score = [5,4,3,2,1]
输出:["Gold Medal","Silver Medal","Bronze Medal","4","5"]
解释:名次为 [1st, 2nd, 3rd, 4th, 5th]
输入:score = [10,3,8,9,4]
输出:["Gold Medal","5","Bronze Medal","Silver Medal","4"]
解释:名次为 [1st, 5th, 3rd, 2nd, 4th]


4. 解题思路

  1. 先对数组 scorescore 进行排序。
  2. 再将对应前三个位置上的元素替换成对应的字符串:
  3. **"Gold Medal"**, **"Silver Medal"**, **"Bronze Medal"**


5. 参考代码

public class Solution {public int[] shellSort(int[] arr) {int size = arr.length;int gap = size / 2;while (gap > 0) {for (int i = gap; i < size; i++) {int temp = arr[i];int j = i;while (j >= gap && arr[j - gap] < temp) {arr[j] = arr[j - gap];j -= gap;}arr[j] = temp;}gap = gap / 2;}return arr;}public String[] findRelativeRanks(int[] score) {int[] nums = score.clone();nums = shellSort(nums);Map<Integer, Integer> scoreMap = new HashMap<>();for (int i = 0; i < nums.length; i++) {scoreMap.put(nums[i], i + 1);}String[] res = new String[score.length];for (int i = 0; i < score.length; i++) {if (score[i] == nums[0]) {res[i] = "Gold Medal";} else if (score[i] == nums[1]) {res[i] = "Silver Medal";} else if (score[i] == nums[2]) {res[i] = "Bronze Medal";} else {res[i] = String.valueOf(scoreMap.get(score[i]));}}return res;}
}



http://www.mrgr.cn/news/68913.html

相关文章:

  • 【Linux】软件安装目录的选择
  • 云原生周刊:Istio 1.24.0 正式发布
  • 自动驾驶安全方向论文阅读
  • 关于 npm 更新镜像源问题
  • C++ | Leetcode C++题解之第560题和为K的子数组
  • 【C#/C++】C++/CL中String^的含义和举例,C++层需要调用C#层对象时...
  • XML 现实案例:深入解析与应用
  • Java 归并排序算法详解
  • 【C语言】浮点型数据存储 和 整型数据存储的区别
  • QT最新版6.8在线社区版安装教程
  • C语言 | Leetcode C语言题解之第552题学生出勤记录II
  • PyQt入门指南四十七 内存管理技巧
  • 解释Python中的装饰器的作用
  • SpringBoot12-Shiro
  • 论文重复率从58%降到38%,死活降不下去了,怎么办?
  • 【C语言】位运算
  • 国产操作系统ctyun下安装Informix SDK开发包的方法
  • Python练习13
  • Git国内国外下载地址镜像,git安装视频教程
  • Golang | Leetcode Golang题解之第552题学生出勤记录II
  • Android 下内联汇编,Android Studio 汇编开发
  • 云计算在远程办公中的应用
  • PMP–知识卡片--项目干系人
  • 科研绘图系列:R语言热图和点图(heatmap dotplot)
  • Python软体中使用Matplotlib绘制散点图的实用指南
  • 【RMA】基于知识注入和模糊学习的多模态歧义分析