py1.png

Problem

https://leetcode.com/problems/sort-the-people/description/

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 inames[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:

Solution

def sort_by_height(names, heights):
    combined = zip(names, heights)  # Key Point 1
    sorted_combined = sorted(combined, key=lambda x: x[1], reverse=True) # Key Point 2
    return [name for name, _ in sorted_combined]  # Key Point 3