LeetCode 2418. 按身高排序

给你一个字符串数组 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 。

提示:

n == names.length == heights.length
1 <= n <= 10 3 ^3 3
1 <= names[i].length <= 20
1 <= heights[i] <= 10 5 ^5 5
names[i] 由大小写英文字母组成
heights 中的所有值互不相同

直接模拟即可:

class Solution {
public:
    vector<string> sortPeople(vector<string>& names, vector<int>& heights) {
        map<int, int, greater<int>> im;
        int sz = heights.size();
        for (int i = 0; i < sz; ++i) {
            im[heights[i]] = i;
        }

        vector<string> ans;
        for (auto &heightToIndex : im) {
            ans.push_back(names[heightToIndex.second]);
        }

        return ans;
    }
};

如果有n个人,此算法时间复杂度为O(nlgn),空间复杂度为O(n)。

你可能感兴趣的:(LeetCode,leetcode,算法,数据结构)