根据身高排序(力扣2418)

news/2024/10/17 22:30:07/

问题:

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

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

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

 

示例 1:

输入:names = ["Mary","John","Emma"], heights = [180,165,170]
输出:["Mary","Emma","John"]
解释:Mary 最高,接着是 Emma 和 John 。
示例 2:

输入:names = ["Alice","Bob","Bob"], heights = [155,185,150]
输出:["Bob","Alice","Bob"]
解释:第一个 Bob 最高,然后是 Alice 和第二个 Bob 。
 

提示:

n == names.length == heights.length
1 <= n <= 103
1 <= names[i].length <= 20
1 <= heights[i] <= 105
names[i] 由大小写英文字母组成
heights 中的所有值互不相同

思想:

根据快速排序算法思想对heights数组降序排序,并在此过程对names数据进行对应的排序。

代码:

class Solution {public String[] sortPeople(String[] names, int[] heights) {quickSort(heights,names,0,heights.length - 1 );return names;}public void quickSort(int[] height, String[] names, int hl, int hr){if(hl >= hr) return ;int mid = partition(height,names,hl,hr);quickSort(height,names,hl,mid - 1);quickSort(height,names,mid + 1,hr);}public int partition(int[] height, String[] names,int hl, int hr){int piovt = height[hr];int left = hl;int right = hr - 1;while(left <= right){while(left <= right && height[left] >= piovt) left++;while(left <= right && height[right] < piovt) right--;if(left < right){swapHeight(left,right,height);swapString(left,right,names);}}swapHeight(left,hr,height);swapString(left,hr,names);return left;}public void swapHeight(int i, int j, int[] height){int t = height[i];height[i] = height[j];height[j] = t;}public void swapString(int i, int j, String[] names){String t = names[i];names[i] = names[j];names[j] = t;}
}

http://www.ppmy.cn/news/51139.html

相关文章

第4章:运算符

1.算术运算符 ① SELECT 10010,100-35.5,100*2,100/2,100%30 FROM DUAL;②在sql中“”没有连接作用&#xff0c;表示加法运算&#xff0c;字符串转换为数值&#xff08;隐式转换&#xff09;。非数值看作0处理 SELECT 1001 1 FROM DUAL;SELECT 100 a FROM DUAL;③加法运算…

数字化转型危与机,20年老厂的升级之路

“投资大、周期长、见效慢”&#xff0c;是每一家企业在考虑数字化战略时&#xff0c;都会纠结的问题。 打江山容易&#xff0c;守江山难 企业在快速扩张的过程中&#xff0c;往往可以不需要过多的考虑细节的问题&#xff0c;跑马圈地的打法会更加有效。 但是市场占有量开始饱…

Turndown 源码解析:一、辅助函数

extend() Object.assign的补丁。 function extend (destination) {for (var i 1; i < arguments.length; i) {var source arguments[i];for (var key in source) {if (source.hasOwnProperty(key)) destination[key] source[key];}}return destination }repeat() Stri…

基于Java+Springboot+Vue+elememt甜品屋蛋糕商城系统设计和实现

基于JavaSpringbootVueelememt甜品屋蛋糕商城系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

(十九)查找算法-线性查找

1 查找算法基本介绍 在 Java 中&#xff0c;常用的查找算法有4种&#xff1a; &#xff08;1&#xff09;顺序&#xff08;线性&#xff09;查找 &#xff08;2&#xff09;二分查找/折半查找 &#xff08;3&#xff09;插值查找 &#xff08;4&#xff09;斐波那契查找 2 线…

《程序员面试金典(第6版)》面试题 16.03. 交点(直线的一般式方程,克莱姆法则,行列式,C++)

题目描述 给定两条线段&#xff08;表示为起点start {X1, Y1}和终点end {X2, Y2}&#xff09;&#xff0c;如果它们有交点&#xff0c;请计算其交点&#xff0c;没有交点则返回空值。 要求浮点型误差不超过10^-6。若有多个交点&#xff08;线段重叠&#xff09;则返回 X 值最…

服务(第十二篇)LVS-DR模式

数据包流向分析&#xff1a; &#xff08;1&#xff09;客户端发送请求到 Director Server&#xff08;负载均衡器&#xff09;&#xff0c;请求的数据报文&#xff08;源 IP 是 CIP,目标 IP 是 VIP&#xff09;到达内核空间。 &#xff08;2&#xff09;Director Server 和 Re…

PCL点云库(3) — common模块

目录 3.1 common模块中的头文件 3.2 common模块中的基本函数 &#xff08;1&#xff09;angle角度转换 &#xff08;2&#xff09;distance距离计算 &#xff08;3&#xff09;random随机数生成 &#xff08;4&#xff09;sping扩展模块 &#xff08;5&#xff09;time获…