題目描述
給你一個字符串 數組 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; }
};