毎日の LeetCode 2418 を記録します。 Java 実装を高さで並べ替えます

タイトル説明:

文字列の配列名と、互いに異なる正の整数の配列の高さが与えられます。両方の配列の長さは 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;
    }
}

おすすめ

転載: blog.csdn.net/m0_65563175/article/details/130363180