Open carloscn opened 1 year ago
pub fn sort_people(names: Vec<&str>, heights: Vec<i32>) -> Vec<String>
{
let mut ret:Vec<String> = vec![];
if names.len() < 1 || heights.len() < 1 || names.len() != heights.len() {
return ret;
}
let mut input:Vec<(i32, String)> = vec![];
for i in 0..names.len() {
input.push((heights[i], names[i].to_string()));
}
input.sort_by(|a, b| b.cmp(a));
for e in input {
ret.push(e.1);
}
return ret;
}
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 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.