xqn2017

导航

506. Relative Ranks

原文题目:

506. Relative Ranks

解题:

思路就是,先将原数组排序,如[21,8,9,10,11]降序排序后为[21,11,10,9,8] 建立map关系{21:0,11:1,10:2,9:3,8:4},然后遍历原数组[21,8,9,10,11]获取相应key对应的value,即可知道排名,然后0,1,2,替换为金银铜,其他的替换为相应的4,5,6即可

AC代码:

class Solution {
public:
	vector<string> findRelativeRanks(vector<int>& nums) 
	{
		vector <string> vec;
		vector <int> tmp;
		map <int,int> m;
		int idx = 0;
		tmp = nums;

		sort(tmp.begin(),tmp.end(),greater<int>()); //降序排列
		for(idx = 0; idx < tmp.size();idx++)
		{
			m[tmp[idx]] = idx;         //将排序后的数值和索引建立map
		}
		for(idx = 0; idx < nums.size();idx++) //遍历原先的nums数组,如果其对应的是0,1,2则替换,如果不是则用map对应的值+1即可(下标从0开始,故加1)
		{
			if(m[nums[idx]] == 0)
			{
				vec.push_back("Gold Medal");
			}
			else if(m[nums[idx]] == 1)
			{
				vec.push_back("Silver Medal");
			}
			else if(m[nums[idx]] == 2)
			{
				vec.push_back("Bronze Medal");
			}
			else
			{
				vec.push_back(to_string(m[nums[idx]]+1));
			}
		}

		return vec;


	}
};

  

posted on 2018-04-10 20:58  xqn2017  阅读(169)  评论(0)    收藏  举报