- 📢前言
- 🌲原题样例:相对名次
- 🌻C#方法
- 🌻Java 方法:排序
- 💬总结
- 🌲 每天打卡一道算法题,既是一个学习过程,又是一个分享的过程😜
- 🌲 提示:本专栏解题 编程语言一律使用 C# 和 Java 两种进行解题
- 🌲 要保持一个每天都在学习的状态,让我们一起努力成为算法大神吧🧐!
- 🌲 今天是力扣算法题持续打卡第67天🎈!
给出 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。
- 所有运动员的成绩都不相同。
先保存原本的索引,再排序
代码:
public class Solution {
class Pair {
public int idx;
public int rank;
}
string[] medalStr = { "", "Gold Medal", "Silver Medal", "Bronze Medal" };
string GetRankStr(int rank) {
if (rank > 3) return rank.ToString();
else return medalStr[rank];
}
public string[] FindRelativeRanks(int[] nums) {
int n = nums.Length;
Pair[] ps = new Pair[n];
for (int i = 0; i b.rank - a.rank);
string[] ans = new string[n];
for (int rank = 0; rank 3) {
for (int i = len - 4; i >= 0; --i) {
map.put(score[i], len - i + "");
}
map.put(score[len-1], "Gold Medal");
map.put(score[len-2], "Silver Medal");
map.put(score[len-3], "Bronze Medal");
} else {
if( len == 1) {
map.put(score[0], "Gold Medal");
} else if ( len == 2) {
map.put(score[0], "Silver Medal");
map.put(score[1], "Gold Medal");
} else {
map.put(score[0], "Bronze Medal");
map.put(score[1], "Silver Medal");
map.put(score[2], "Gold Medal");
}
}
for (int i = 0; i
关注
打赏
热门博文
- 通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
- 花一天时间做一个高质量飞机大战游戏,过万字Unity完整教程!漂亮学妹看了直呼666!
- 自动化测试哪家强?Apipost用实力来告诉你。
- Unity实战篇 | 游戏中控制 地图无限自动化生成 的方法,进一步优化项目
- Unity实战篇 |制作一个跟随鼠标转向的 简易箭头指示标,包括 UI指向 和 3D指向标
- 【100个 Unity实用技能】| Unity读取本地文件(Json,txt等)的三种方法示例
- 【100个 Unity实用技能】| Unity中常用的几种路径 分析,不同平台路径总结
- 实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
- 【100个 Unity实用技能】| C#中List.Find 方法详解 查找符合要求的第一个元素并返回
- 一顿饭的时间,教你怎样快速使用 动态代理ip 做一个获取Steam 热销商品 的方法