每日OJ题_贪心算法二④_力扣2418. 按身高排序

目录

力扣2418. 按身高排序

解析代码


力扣2418. 按身高排序

2418. 按身高排序

难度 简单

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

对于每个下标 inames[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 <= 10^3
  • 1 <= names[i].length <= 20
  • 1 <= heights[i] <= 10^5
  • names[i] 由大小写英文字母组成
  • heights 中的所有值互不相同
class Solution {
public:vector<string> sortPeople(vector<string>& names, vector<int>& heights) {}
};

解析代码

此题并不是贪心的题,只是一个简单的排序,为下一道贪心的题做准备。

可以直接创建一个二元组vector<pair<int, string>>,或者用哈希的解法。下面看另一种解法:

        对下标排序解法(通过排序 ''索引'' 的方式):我们不能直接按照 i 位置对应的 heights 来排序,因为排序过程是会移动元素的,但是names 内的元素是不会移动的。

        由题意可知, names数组和 heights数组的下标是壹壹对应的,因此可以重新创建出来一个下标数组,将这个下标数组按照 heights[i] 的大小排序。那么,当下标数组排完序之后,里面的顺序就相当于heights这个数组排完序之后的下标。之后通过排序后的下标,依次找到原来的name ,完成对名字的排序。

class Solution {
public:vector<string> sortPeople(vector<string>& names, vector<int>& heights) {int sz = heights.size();vector<int> index(sz);for(int i = 0; i < sz; ++i){index[i] = i;}sort(index.begin(), index.end(),[&](int index1, int index2){return heights[index1] > heights[index2];});vector<string> ret;for(auto& e : index){ret.push_back(names[e]);}return ret;}
};

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

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

相关文章

【Unity】在空物体上实现 IPointerClickHandler 不起作用

感谢Unity接口IPointerClickHandler使用说明_哔哩哔哩_bilibiliUnity接口IPointerClickHandler使用说明, 视频播放量 197、弹幕量 0、点赞数 3、投硬币枚数 2、收藏人数 2、转发人数 0, 视频作者 游戏创作大陆, 作者简介 &#xff0c;相关视频&#xff1a;在Unity多场景同时编辑…

京东初级运营必修课程,从零开始学习(49节课)

课程内容&#xff1a; 01.1.全面解析店铺后台的各项功能 02.2.商品要素的重要性及如何打造黄金标题 03.3.手把手带你完成商品上架 04.4.为啥你的流量不转化-诸葛 05.5.怎么策划一张高点击率的照片 06.6.内功优化之数据化标题创建 07.7.内功优化之如何高转化活动落地页 …

node应用部署运行案例

生产环境: 系统&#xff1a;linux centos 7.9 node版本&#xff1a;v16.14.0 npm版本:8.3.1 node应用程序结构 [rootRainYun-Q7c3pCXM wiki]# dir assets config.yml data LICENSE node_modules nohup.out output.log package.json server wiki.log [rootRainYun-Q7c…

SpringBoot集成Log2j4指定外部配置文件源码解读

一、背景 程序读取外部log4j2.xml配置文件方式为启动命令添加了--logging.config/path/log4j2.xml&#xff0c;因系统安全整改&#xff0c;将/var/log/目录改为了700&#xff0c;程序使用非root启动时log4j2报错无法在/var/log目录下创建日志文件。经排查发现jar包的classpath…

python的self类

在Python的类&#xff08;class&#xff09;定义中&#xff0c;self 是一个变量名&#xff0c;它代表实例本身。在类定义的方法中&#xff0c;self 总是作为第一个参数&#xff0c;并且这是一个约定俗成的用法。通过 self&#xff0c;你可以访问和操作类的属性&#xff08;vari…

Nacos如何支持服务发现和注册?

Nacos如何支持服务发现和注册 在微服务架构的浪潮中&#xff0c;服务发现和注册成为了支撑整个架构稳定运行的关键技术之一。而Nacos&#xff0c;作为阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台&#xff0c;凭借其简单易用、功能强大的特性&#xff0c;受到了广…

我的创作纪念日—128天的坚持|分享|成长

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&am…

C++进阶-----继承

1、继承的概念和定义 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象 程序设计的层次结构&#xf…

Docker-Compose概述与简单编排部署

目录 前言 一、Docker-Compose 概述 1、Docker-Compose 概念 2、Docker-Compose 优缺点 2.1 Docker-Compose 优点 2.2 Docker-Compose 缺点 3、Docker-Compose与Docker-Swarm的区别 二、两大文件格式 1、YAML 文件格式 2、JOSON 文件格式 3、YAML 与 JOSON 格式的区…

用Rust编写Python扩展

一、用Rust编写Python扩展 用Rust编写Python扩展是完全可行的&#xff0c;并且近年来变得越来越流行。Rust是一种内存安全的语言&#xff0c;它提供了与C语言类似的底层访问能力&#xff0c;但具有更强大的内存安全和并发特性。 为了使用Rust编写Python扩展&#xff0c;你可以…

全志ARM-蜂鸣器

sh操作准备&#xff1a; 1.使Tab键的缩进和批量对齐为4格 在/etc/vim/vimrc 中添加一项配置 set tabstop 4; 也可以再加一行 set nu显示代码的行数 vim的设置&#xff0c;修改/etc/vim/vimrc文件&#xff0c;需要用超级用户权限 /etc/vim/vimrc set shiftwidth4 设置批量…

【刷题篇】动态规划-二维费用的背包问题(十二)

文章目录 1、一和零2、盈利计划3、组合总和 Ⅳ4、不同的二叉搜索树(卡特兰数) 1、一和零 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&#x…

IC 卡技术在生活中的应用

在现代科技高速发展的时代&#xff0c;IC 卡技术已经深入到我们生活的各个角落。它以其便捷、高效和安全的特点&#xff0c;为我们的生活带来了诸多便利。 IC 卡广泛应用于公共交通领域&#xff0c;让我们的出行变得更加顺畅。使用公交卡&#xff0c;只需轻轻一刷&#…

vue3 + ts 快速入门(全)

文章目录 学习链接1. Vue3简介1.1. 性能的提升1.2.源码的升级1.3. 拥抱TypeScript1.4. 新的特性 2. 创建Vue3工程2.1. 基于 vue-cli 创建2.2. 基于 vite 创建&#xff08;推荐&#xff09;vite介绍创建步骤项目结构安装插件项目结构总结 2.3. 一个简单的效果Person.vueApp.vue …

数字电路-5路呼叫显示电路和8路抢答器电路

本内容涉及两个电路&#xff0c;分别为5路呼叫显示电路和8路抢答器电路&#xff0c;包含Multisim仿真原文件&#xff0c;为掌握FPGA做个铺垫。紫色文字是超链接&#xff0c;点击自动跳转至相关博文。持续更新&#xff0c;原创不易&#xff01; 目录&#xff1a; 一、5路呼叫显…

Android BINDER是干嘛的?

1.系统架构 2.binder 源码位置&#xff1a; 与LINUX传统IPC对比

【迅投qmt系列】4、获取数据的方式

获取数据是进行策略回测、实时执行的前提&#xff0c;不同的场景下&#xff0c;有相对合适的数据获取方式。 1、只取历史数据 这个场景的内容一般是将历史数据下载下来后&#xff0c;再将数据用于其他用途。因为对效率没有多少要求&#xff0c;代码最简单&#xff0c;它将qmt…

【数学】高斯-约旦消元

前置知识 高斯消元 高斯-约旦消元 和高斯消元一样&#xff0c;高斯-约旦消元也是通过加减消元来化简方程。两者之间的不同在于&#xff0c;高斯-约旦消元会将系数矩阵消成形如 A ′ [ a 1 , 1 ′ b 1 ′ a 2 , 2 ′ b 2 ′ ⋱ ⋮ a n , n ′ b n ′ ] A\begin{bmatrix}a_{1…

题目:吃奶酪

问题描述&#xff1a; 解题思路&#xff1a; 枚举每种吃奶酪顺序&#xff0c;并计算其距离&#xff0c;选择最小的距离即答案。v数组&#xff1a;记录顺序。 注意点&#xff1a;1. 每次用于min的s需要重置为0。 2. 实数包括小数&#xff0c;所以结构体内x,y为double类型。 3. 第…

周期交易,交易周期

越来越体会到周期的力量和内涵。周期蕴涵着循环、蕴涵着正反力量的此消彼长、蕴涵着趋势演进的规律。只要是在一个相对自由的市场或者领域中&#xff0c;周期就是一种天道&#xff0c;其背后的经济学原理就是简单的趋利性和供需关系&#xff0c;这是自然界的一种属性&#xff0…