LeetCode2418

力扣2418题

题目描述:

给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。

对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。

请按身高 降序 顺序返回对应的名字数组 names 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sort-the-people
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解思路:可以通过一个索引数组来找heights

class Solution {
    public String[] sortPeople(String[] names, int[] heights) {

        String[] res = new String[names.length];//返回的结果数组
        int n = names.length;
        //强制使用包装类
        Integer[] indice = new Integer[n];//索引数组,[0,1,2,3]
        for (int i=0;i<n;i++){
            indice[i]=i;
        }

        Arrays.sort(indice, (a, b) -> heights[b] - heights[a]);//这句比较难理解

        for (int i=0;i<n;i++){
            res[i] = names[indice[i]];
        }
        return res;
    }
}

看题解中一位大佬写的:

主要理解:Arrays.sort(indice, (a, b) -> heights[b] - heights[a]);

Arrays.sort():比较器函数,确定数组中的元素应该如何比较,比较器函数是一个lambda表达式(a,b)->heights[b]->heights[a]

lambda表达式:对于给定的索引a b,将heights[b]和heights[a]进行比较,按照高度从大到小的顺序排序(heights[b]->heights[a])

如果是heights[b]->heights[a]:则是从小到大的顺序排序

猜你喜欢

转载自blog.csdn.net/Miss_croal/article/details/130358670