leetcode2418.按身高排序

题目描述:

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

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

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

示例一:
 

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

示例二:
 

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

题目解析:

首先这道题的解决方法不止一种,我们这里有金典的两种:

1.哈希映射法:

就是创建一个身高:名字的哈希表,先将每个人名字和身高的对应信息存入哈希表中,然后再将升

高降序排序,最后再将升高对应的哈希表中的名字取出,就返回了对应的按身高降序排序的名字,

这种方法是最常见的,但并不是最优的。

对应的代码如下:

class Solution 
{
public:vector<string> sortPeople(vector<string>& names, vector<int>& heights) {int n = names.size();unordered_map<int ,string> map;//对应关系的放入:for(int i = 0;i < n;i++){map[heights[i]] = names[i];}//升高降序排列sort(heights.begin(),heights.end(),greater());//取出对应的姓名:for(int i = 0;i < n;i++){names[i] = map[heights[i]];}return names;}
};

2.下标排序法:

这种方法才是本道题的最优解,设置一个下标数组,通过对身高的排序对下标数组进行排序,然后

再遍历一遍下标数组,将名字对应的下标按降序,插入到一个新的字符串数组中,对应代码如下:
 

class Solution 
{
public:vector<string> sortPeople(vector<string>& names, vector<int>& heights) {//创建一个下标数组vector<string> ret;int n = heights.size();vector<int> index(n);for(int i = 0;i < n;i++){index[i] = i;}//对下标数组进行排序sort(index.begin(),index.end(),[&](int x,int y){return heights[x] > heights[y];});//提取结果for(int i = 0;i < n;i++){ret.push_back(names[index[i]]);}return ret;}
};

通过一个lamda表达式来改变index的排序策略,从而通过index数组的下标记录来队名字有了降序

的排序。

这就是这道题的两种解法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Azure AKS集群监控告警表达式配置

背景需求 Azure AKS集群中&#xff0c;需要对部署的服务进行监控和告警&#xff0c;需要创建并启用预警规则&#xff0c;而这里怎么去监控每个pod级别的CPU和内存&#xff0c;需要自己写搜索查询 解决方法 搜索和查询的语句如下&#xff0c;需要自己替换其中的部分信息,其中…

汽车驾驶3D模拟仿真展示系统更立体直观

随着新能源汽车的普及&#xff0c;它已成为现代生活中不可或缺的交通工具。并且国产车的崛起&#xff0c;其设计与零部件制造水平已能与合资车相媲美&#xff0c;因此汽车维修技能的学习变得尤为重要。汽车维修3D仿真教学软件应运而生&#xff0c;为广大学员提供了一个直观、高…

vLLM-prefix浅析(System Prompt,大模型推理加速)

原文&#xff1a;vLLM-prefix浅析&#xff08;System Prompt&#xff0c;大模型推理加速&#xff09; 简介 本文浅析了在大模型推理加速方面一个非常优秀的项目 vLLM 的一个新特性 Prefix。在 Prompt 中有相同前缀时可以提高吞吐量降低延迟&#xff0c;换句话说可以省去这部分…

M - 上帝造题的八分钟(数位dp,dfs—dp,****)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 我们称一个数为 fufu 数&#xff0c;当且仅当一个数满足下述性质&#xff1a;它的数位中有至少 3 个相邻的数字 3&#xff0c;且数字 0 的个数与数字 1 的个数相差至少为 1 的正整数。 给定一个…

Python拿取nmap扫描的结果并存在csv文件中

今天分享一个使用subprocess模块来执行nmap命令,并使用csv模块来将结果写入CSV文件的方法。 代码如下: import subprocess import csv# 定义扫描的参数 ip_address = 172.18.0.1/24 # 扫描的IP地址或CIDR port_range = -p 443 # 扫描的端口范围 output_filename = s…

睫毛膏上架亚马逊销售需要做什么准备 HRIPT / RIPT斑贴试验

睫毛膏上架需要办理&#xff1a;HRIPT / RIPT斑贴试验COA成分分析证书BCOP认证报告&#xff01; 什么是BCOP&#xff1a; 亚马逊美国站对接触眼睛的眼影&#xff0c;液体眼线笔&#xff0c;磁性睫毛&#xff0c;假睫毛等产品&#xff0c;需提供BCOP&#xff08;Bovine Corneal…

存在矛盾的题目

{ u t t − a 2 u x x 0 , t > 0 , x > 0 , u ( x , 0 ) sin ⁡ ( x ) 2 x , x ≥ 0 , u t ( x , 0 ) cos ⁡ ( x ) , x ≥ 0 , u x ( 0 , t ) 2 , t ≥ 0. \begin{cases} u_{tt} - a^2 u_{xx} 0, & t > 0, x > 0, \\ u(x, 0) \sin(x) 2x, & x \ge…

解线性方程组——上三角、下三角,回代算法 | 北太天元

1. 解上三角(回代) a i i ≠ 0 a_{ii\neq0} aii0​ , i 1 , 2 , … , n i1,2,\ldots,n i1,2,…,n a 11 x 1 a 12 x 2 ⋯ a 1 n x n b 1 a 22 x 2 ⋯ a 2 n x n b 2 ⋯ a n n x n b n \begin{aligned} a_{11}x_1a_{12}x_2\cdotsa_{1n}x_n&b_1 \\ a_{22}x_2\cdot…

解决idea不识别${pageContext.request.contextPath}的方法

文章目录 一、产生原因二、解决方法——直接修改web.xml文件三、修改模板——找到web.xml模板&#xff0c;修改替换 一、产生原因 由于web.xml 使用的web-app版本号过低。导致无法识别"{pageContext.request.contextPath}"。 IDEA在创建javaweb项目的时候&#xff0…

synchronized 之谜

序言 本文给大家介绍一下 synchronized 关键字的部分原理。 一、内存中的 Java 对象 class A {private String attr; }先引入一个问题&#xff1a;上面类 A 有一个属性 attr。当类 A 实例化之后的对象在内存中是如何表示的呢&#xff1f; 在内存中&#xff0c;Java 对象由三…

2024年03月CCF-GESP编程能力等级认证Python编程二级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共15题,共30分) 第1题 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是? A.小程序 B.计时器 C.操作系统 D.神话人物 答案…

【Linux驱动层】iTOP-RK3568学习之路(三):字符设备驱动框架

一、总体框架图 二、字符设备相关函数 静态申请设备号 register_chrdev_region 函数原型&#xff1a;register_chrdev_region(dev_t from, unsigned count, const char *name) 函数作用&#xff1a;静态申请设备号&#xff0c;可以一次性申请多个连续的号&#xff0c;count指定…

电阻理论基础

电流的形成是电荷运动&#xff0c;电子方向相反&#xff0c;标量 电压&#xff1a;电势有参考点&#xff0c;是一个相对量 电阻的值不取决于电压和电流的&#xff0c; Ra表示标准电阻 R表示任意温度的电阻

Transformer step by step--Positional Embedding 和 Word Embedding

Transformer step by step往期文章&#xff1a; Transformer step by step--层归一化和批量归一化 要把Transformer中的Embedding说清楚&#xff0c;那就要说清楚Positional Embedding和Word Embedding。至于为什么有这两个Embedding&#xff0c;我们不妨看一眼Transformer的…

代码随想录算法训练营第三十八天| LeetCode509.斐波那契数、LeetCode70.爬楼梯、LeetCode746.使用最小花费爬楼梯

LeetCode 509 斐波那契数 题目链接&#xff1a;509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; 【解题思路】 1.确定dp数组以及下标的含义 dp[i]的定义为&#xff1a;第i个数的斐波那契数值是dp[i] 2.确定递推公式 递推公式就是题目说的斐波那契值递推公式 3.确定…

【Java GUI】人机对弈五子棋

在学校的Java课程中&#xff0c;我们被分配了一项有趣的任务&#xff1a;开发一款能够实现人机对弈的五子棋游戏。为了更好地理解Java GUI的运用&#xff0c;并与大家分享学习心得&#xff0c;我将整个开发过程记录在这篇博客中。欢迎大家阅读并提供宝贵的意见和建议&#xff0…

微信小程序-------模板与配置

能够使用 WXML 模板语法渲染页面结构能够使用 WXSS 样式美化页面结构能够使用 app.json 对小程序进行全局性配置能够使用 page.json 对小程序页面进行个性化配置能够知道如何发起网络数据请求 一.WXML 模板语法 数据绑定 1. 数据绑定的基本原则 ① 在 data 中定义数据 ② 在…

文件分享新风尚,二维码生成器全功能解析

随着科技的飞速发展&#xff0c;二维码生成器已经成为我们日常生活中不可或缺的一部分。无论是支付、下载应用还是获取信息&#xff0c;二维码都以其便捷性和高效性赢得了广大用户的青睐。在这样的背景下&#xff0c;二维码生成器应运而生&#xff0c;不仅支持多文件生成二维码…

Android Studio修改“choose boot runtime for the IDE“后无法打开

在Android Studio中选择了"choose boot runtime for the IDE"的New后&#xff0c;会自动重启AS&#xff0c;然后就无法打开android studio了&#xff0c;打开直接报错&#xff0c;cause by如下 Unable to make field protected java.lang.Runnable java.awt.event.In…

[leetcode] 58. 最后一个单词的长度

文章目录 题目描述解题方法倒序遍历java代码复杂度分析 题目描述 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a…