go语言题解LeetCode506相对名次示例详解

 更新时间:2022年12月30日 10:05:50   作者:刘09k11  
这篇文章主要为大家介绍了go语言题解LeetCode506相对名次示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一 描述

506. 相对名次

给你一个长度为 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 位运动员的获奖情况。

示例 1:

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

示例 2:

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

提示:

n == score.length

1 <= n <= 10^4

0 <= score[i] <= 10^6

score 中的所有值 互不相同

二 分析

本题以map映射求解,首先把所有的字符串分别添加到指定map集合中去,并依次给予对应的索引,随后对字符串数组进行从大到小排序,并依次从map集合中由键找值,并把该值给到提前创建的字符串数组中作为索引,从大到小依次赋予“Gold Medal”、“Silver Medal”、“Bronze Medal”以及3、4、5...

三 答案

class Solution {
    public String[] findRelativeRanks(int[] nums) {
        if(nums.length==1) {
            return new String[]{"Gold Medal"};
        }
        String[] arr = new String[nums.length];
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        int count = 0;
        for(int i = 0,j=0;i<nums.length && j<nums.length;i++,j++) {
            map.put(nums[i],j);
        }
        Arrays.sort(nums);
        for(int i = 0;i<nums.length/2;i++) {
            int temp = nums[nums.length-i-1];
            nums[nums.length-i-1] = nums[i];
            nums[i] = temp;
        }
        if(nums.length==2) {
            arr[map.get(nums[0])] = "Gold Medal";
            arr[map.get(nums[1])] = "Silver Medal";
            return arr;
        }
        arr[map.get(nums[0])] = "Gold Medal";
        arr[map.get(nums[1])] = "Silver Medal";
        arr[map.get(nums[2])] = "Bronze Medal";
        for(int i = 3;i<nums.length;i++) {
            arr[map.get(nums[i])] = i+1+"";
        }
        return arr;
    }
}

以上就是go语言题解LeetCode506相对名次示例详解的详细内容,更多关于go语言题解相对名次的资料请关注脚本之家其它相关文章!

相关文章

  • go使用SQLX操作MySQL数据库的教程详解

    go使用SQLX操作MySQL数据库的教程详解

    sqlx 是 Go 语言中一个流行的操作数据库的第三方包,它提供了对 Go 标准库 database/sql 的扩展,简化了操作数据库的步骤,下面我们就来学习一下go如何使用SQLX实现MySQL数据库的一些基本操作吧
    2023-11-11
  • 详解Go语言Sync.Pool为何不加锁也能够实现线程安全

    详解Go语言Sync.Pool为何不加锁也能够实现线程安全

    在这篇文章中,我们将剖析sync.Pool内部实现中,介绍了sync.Pool比较巧妙的内部设计思路以及其实现方式。在这个过程中,也间接介绍了为何不加锁也能够实现线程安全,感兴趣的可以学习一下
    2023-04-04
  • golang中tar压缩和解压文件详情

    golang中tar压缩和解压文件详情

    这篇文章主要给大家介绍golang中tar压缩和解压文件,文章以查看官方文档自带的给大家演习一下golang的archive/tar压缩和解压功能,需要的朋友可以参考一下
    2021-11-11
  • 一文详解go同步协程的必备工具WaitGroup

    一文详解go同步协程的必备工具WaitGroup

    这篇文章主要为大家介绍了一文详解go同步协程的必备工具WaitGroup使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Go泛型之泛型约束示例详解

    Go泛型之泛型约束示例详解

    这篇文章主要给大家介绍了关于Go泛型之泛型约束的相关资料,泛型是静态语言中的一种编程方式,这种编程方式可以让算法不再依赖于某个具体的数据类型,而是通过将数据类型进行参数化,以达到算法可复用的目的,需要的朋友可以参考下
    2023-12-12
  • golang实现mysql数据库事务的提交与回滚

    golang实现mysql数据库事务的提交与回滚

    这篇文章主要介绍了golang实现mysql数据库事务的提交与回滚,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Golang中指针的使用详解

    Golang中指针的使用详解

    Golang是一门支持指针的编程语言,指针是一种特殊的变量,存储了其他变量的地址。通过指针,可以在程序中直接访问和修改变量的值,避免了不必要的内存拷贝和传递。Golang中的指针具有高效、安全的特点,在并发编程和底层系统开发中得到广泛应用
    2023-04-04
  • Golang使用Redis与连接池方式

    Golang使用Redis与连接池方式

    这篇文章主要介绍了Golang使用Redis与连接池方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Golang汇编命令解读及使用

    Golang汇编命令解读及使用

    这篇文章主要介绍了Golang汇编命令解读及命令使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • golang中defer的基本使用教程

    golang中defer的基本使用教程

    go语言中defer可以完成延迟功能,当前函数执行完成后再执行defer的代码块,下面这篇文章主要给大家介绍了关于golang中defer基本使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06

最新评论