题目描述
给你一个字符串 数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。
对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。
请按身高 降序 顺序返回对应的名字数组 names 。
示例 1:
输入:names = [“Mary”,“John”,“Emma”], heights = [180,165,170]
输出:[“Mary”,“Emma”,“John”]
解释:Mary 最高,接着是 Emma 和 John 。
示例 2:
输入:names = [“Alice”,“Bob”,“Bob”], heights = [155,185,150]
输出:[“Bob”,“Alice”,“Bob”]
解释:第一个 Bob 最高,然后是 Alice 和第二个 Bob 。
算法分析
标签:哈希表 排序
1.通过一个哈希表,将身高和名字对应的存储起来
2.把身高从高到低进行排序,然后依次把名字取出来
完整代码
class Solution {
public:vector<string> sortPeople(vector<string>& names, vector<int>& heights) {//哈希映射unordered_map<int,string>m;int n=names.size();//对应关系存入,身高作为key,名字作为valuefor(int i=0;i<n;i++){m[heights[i]]=names[i];}//身高按降序排序sort(heights.begin(),heights.end(),greater<int>());for(int i=0;i<n;i++){names[i]=m[heights[i]];//把height按照降序排序后放入names}return names; }
};