按身高排序【LC2418】
给你一个字符串数组
names,和一个由 互不相同 的正整数组成的数组heights。两个数组的长度均为n。对于每个下标
i,names[i]和heights[i]表示第i个人的名字和身高。请按身高 降序 顺序返回对应的名字数组
names。
在外面有事 希望一切顺利~
-
思路
先使用二维数组记录每个height的下标和值,然后对值进行降序排序,然后根据下标依次取出name,返回即可
-
实现
class Solution { public String[] sortPeople(String[] names, int[] heights) { int n = heights.length; int[][] index = new int[n][2]; for (int i = 0; i < n; i++){ index[i][0] = i; index[i][1] = heights[i]; } Arrays.sort(index, (o1, o2) -> o2[1] - o1[1]); String[] res = new String[n]; for (int i = 0; i < n; i++){ res[i] = names[index[i][0]]; } return res; } }-
复杂度
- 时间复杂度:O(nlogn)O(nlogn)O(nlogn)
- 空间复杂度:O(logn)O(logn)O(logn)
-
给定一个名字字符串数组和对应的身高数组,文章描述了一个算法,该算法首先创建一个二维数组存储每个名字及其对应的身高,然后按身高降序排序这个二维数组,最后根据排序后的身高下标返回名字数组。
16万+

被折叠的 条评论
为什么被折叠?



