G
N
I
D
A
O
L

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

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

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

题目链接:https://leetcode.cn/problems/sort-the-people/

# 解题思路

快速排序模板

# 提交结果

image.png

# 代码

a
class Solution {
    public String[] sortPeople(String[] names, int[] heights) {
        quickSort(names, heights,0,heights.length-1);
        return names;
    }
    private void quickSort(String[] names, int[] heights, int lo, int hi){
        if(lo >= hi) return;
        
        int povit = heights[lo];
        String ts = names[lo];
        int i = lo;
        int j = hi;
        
        while(i < j) {
            // 从右边找第一个 > povit
            while(i < j && heights[j] <= povit) --j;
            heights[i] = heights[j];
            names[i] = names[j];
            // 从左边开始找第一个 < povit 
            while(i < j && heights[i] >= povit) ++i;
            heights[j] = heights[i];
            names[j] = names[i];
        }
        heights[i] = povit;
        names[i] = ts;
        
        quickSort(names, heights, lo, i-1);
        quickSort(names, heights, i+1, hi);
    }
}
更新于 阅读次数

😉觉得写的还不错,请我喝杯咖啡吧😁

独步凌波 微信支付

微信支付

独步凌波 支付宝

支付宝