博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-506-Relative Ranks
阅读量:6184 次
发布时间:2019-06-21

本文共 2303 字,大约阅读时间需要 7 分钟。

题目描述:

Given scores of N athletes, find their relative ranks and the people with the top three highest scores, who will be awarded medals: "Gold Medal", "Silver Medal" and "Bronze Medal".

Example 1:

Input: [5, 4, 3, 2, 1]Output: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]Explanation: The first three athletes got the top three highest scores, so they got "Gold Medal", "Silver Medal" and "Bronze Medal". For the left two athletes, you just need to output their relative ranks according to their scores.

 

Note:

  1. N is a positive integer and won't exceed 10,000.
  2. All the scores of athletes are guaranteed to be unique.

 

要完成的函数:

vector<string> findRelativeRanks(vector<int>& nums) 

 

说明:

1、这道题给定一个vector,存放不同数值的分数,比如[2,4,3,5,1],输出是[“4”,“silver medal”,“bronze medal”,“gold medal”,“5”]。前三名比较特殊,后面输出数字的次序。

2、传统思路快速处理,如下:

先对给定vector排序,然后迭代一遍排序后的vector,建立每个数跟排序的对应表。

最后对原本给定的vector,迭代一遍,输出每个数对应的次序,1/2/3名特殊处理。

代码如下:

vector
findRelativeRanks(vector
& nums) { vector
nums1=nums;//存储一份副本 sort(nums.begin(),nums.end(),greater
());//降序排列,改变nums的排序 map
m1;//建立数值和次序的对应表 for(int i=0;i
res; for(int i=0;i

上述代码十分直观明了,非常暴力的手段,可想而知实测……

23ms,beats 22.36% of cpp submissions。

 

3、改进:

我们先看看哪些步骤是必须的。排序是必须的,因为最后要输出每个数值的次序。建立副本是必须的,因为排序必然改变原来的vector。

那我去掉建立map这个过程?去掉之后比如原本是[2,4,3,5,1],排完序是[5,4,3,2,1],我要找到5所在位置,更新值为"gold medal"?但这样做就是一个双重循环了。我们建立map,之后再插入也不过是两个单重循环。

我们在做排序的时候可不可以记住这个数的位置,比如[2,4,3,5,1]我们简化成[0,1,2,3,4],然后降序排列成[5,4,3,2,1],其实按照位置来说也就是[3,1,2,0,4]。这样我们记住了大小,第三个数最大,第一个数第二大……也记住了它们的位置。

这是一种可以参考的方法,注意看下这部分的代码实现。

代码如下:

   vector
findRelativeRanks(vector
& nums) { vector
rank; for(int i=0; i
nums[b];});//按照原本数值降序排列 vector
ranks(nums.size());//最终要返回的vector for(int i=3; i
0) ranks[rank[0]] = "Gold Medal";//边界情况 if(nums.size() > 1) ranks[rank[1]] = "Silver Medal"; if(nums.size() > 2) ranks[rank[2]] = "Bronze Medal"; return ranks; }

上述代码来源于leetcode用户@kevin36,实测13ms,beats 92.55% of cpp submissions。

转载于:https://www.cnblogs.com/chenjx85/p/8971921.html

你可能感兴趣的文章
WordPress 短代码
查看>>
spring mvc 装配拦截器
查看>>
macOS安装使用OpenConnect客户端
查看>>
如何解决源码包安装时的依赖性问题
查看>>
Raspbian常用命令
查看>>
Swagger中配置了@ApiModelProperty的allowableValues属性但不显示的问题
查看>>
centos7 安装网桥管理工具以及ifconfig
查看>>
java Future用法和意义一句话击破
查看>>
JavaScript IE9以下浏览器版本升级提示
查看>>
spring事件通知机制
查看>>
j2EE JSP
查看>>
Windows Server 2003服务器上IIS6.0拥有转发PHP的能力/IIS6.0与PHP共用80端口
查看>>
★如何证明自己不是精神病?
查看>>
Unable to satisfy the following requirements
查看>>
vs 2005 添加GDI配置
查看>>
Tensorflow 基本概念
查看>>
linux tomcat 远程debug
查看>>
3.新浪微博Swift项目第三天
查看>>
win32gui.CeateWindow的参数
查看>>
python 迭代的理解
查看>>