跳到主要内容

2418.按身高排序

链接:2418.按身高排序
难度:Easy
标签:数组、哈希表、字符串、排序
简介:给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。

题解 1 - python

  • 编辑时间:2023-04-25
  • 执行用时:56ms
  • 内存消耗:15.4MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def sortPeople(self, names: List[str], heights: List[int]) -> List[str]:
l = [i for i in range(len(names))]
l.sort(key=lambda i: heights[i], reverse=True)
return [names[i] for i in l]

题解 2 - cpp

  • 编辑时间:2023-04-25
  • 执行用时:32ms
  • 内存消耗:19.8MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
vector<string> sortPeople(vector<string>& names, vector<int>& heights) {
vector<int> idxs;
for (int i = 0; i < names.size(); i++) idxs.push_back(i);
sort(idxs.begin(), idxs.end(), [&](auto &i1, auto &i2) { return heights[i1] > heights[i2]; });
vector<string> res;
for (int i = 0; i < names.size(); i++) res.push_back(names[idxs[i]]);
return res;
}
};

题解 3 - typescript

  • 编辑时间:2022-09-25
  • 执行用时:76ms
  • 内存消耗:45.9MB
  • 编程语言:typescript
  • 解法介绍:遍历。
function sortPeople(names: string[], heights: number[]): string[] {
return new Array(names.length)
.fill(0)
.map((_, i) => i)
.sort((a, b) => heights[b] - heights[a])
.map(i => names[i]);
}

题解 4 - rust

  • 编辑时间:2023-04-25
  • 执行用时:8ms
  • 内存消耗:2.2MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn sort_people(names: Vec<String>, heights: Vec<i32>) -> Vec<String> {
let mut l = (0..names.len()).collect::<Vec<usize>>();
l.sort_by_key(|i| heights[*i]);
l.into_iter().rev().map(|i| names[i].clone()).collect()
}
}