Skip to content

Latest commit

 

History

History
58 lines (52 loc) · 2.62 KB

README.md

File metadata and controls

58 lines (52 loc) · 2.62 KB

You are given an array of strings names, and an array heights that consists of distinct positive integers. Both arrays are of length n.

For each index i, names[i] and heights[i] denote the name and height of the ith person.

Return names sorted in descending order by the people's heights.

 

Example 1:

Input: names = ["Mary","John","Emma"], heights = [180,165,170]
Output: ["Mary","Emma","John"]
Explanation: Mary is the tallest, followed by Emma and John.

Example 2:

Input: names = ["Alice","Bob","Bob"], heights = [155,185,150]
Output: ["Bob","Alice","Bob"]
Explanation: The first Bob is the tallest, followed by Alice and the second Bob.

 

Constraints:

  • n == names.length == heights.length
  • 1 <= n <= 103
  • 1 <= names[i].length <= 20
  • 1 <= heights[i] <= 105
  • names[i] consists of lower and upper case English letters.
  • All the values of heights are distinct.

Companies: Apple, Infosys

Related Topics:
Array, Hash Table, String, Sorting

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/sort-the-people
// Author: github.com/lzl124631x
// Time: O(NlogN)
// Space: O(N)
class Solution {
public:
    vector<string> sortPeople(vector<string>& names, vector<int>& 
heights) {
        vector<string> ans(names.size());
        vector<int> id(names.size());
        iota(begin(id), end(id), 0);
        sort(begin(id), end(id), [&](int a, int b) { return heights[a] > 
heights[b]; });
        for (int i = 0; i < id.size(); ++i) ans[i] = names[id[i]];
        return ans;
    }
};