タイトル説明:
文字列の配列名と、互いに異なる正の整数の配列の高さが与えられます。両方の配列の長さは n です。
下付き文字 i ごとに、names[i] と heights[i] は i 番目の人物の名前と身長を表します。
高さの降順に対応する名前配列名を返してください。
初期コード:
class Solution {
public String[] sortPeople(String[] names, int[] heights) {
}
}
例 1:
入力: 名前 = ["Mary","John","Emma"], heights = [180,165,170]
出力: ["Mary","Emma","John"]
説明: Mary が最も背が高く、次に Emma と John が続きます。
例 2:
入力: 名前 = ["Alice","Bob","Bob"], heights = [155,185,150]
出力: ["Bob","Alice","Bob"]
説明: 最初に Bob が最も高く、次に Alice と 2 番目ボブ。
参考回答:
class Solution {
public String[] sortPeople(String[] names, int[] heights) {
// 创建哈希map去存储身高与名称
int n = names.length;
Map<Integer,String> map = new HashMap<>();
for(int i = 0; i < n; ++i){
map.put(heights[i],names[i]);
}
// 将身高进行排序 再与map的值进行对比
Arrays.sort(heights);
int j = 0;
for(int i = n - 1; i >= 0; --i){
names[j++] = map.get(heights[i]);
}
return names;
}
}