在学校中,N个小朋友站成一队, 第i个小朋友的身高为height[i],,单调栈的应用

在学校中,N个小朋友站成一队, 第i个小朋友的身高为height[i],
第i个小朋友可以看到的第一个比自己身高更高的小朋友j,那么j是i的好朋友(要求j > i)。
请重新生成一个列表,对应位置的输出是每个小朋友的好朋友位置,如果没有看到好朋友,请在该位置用0代替。
小朋友人数范围是 [0, 40000]。

//暴力解法
#include<stdio.h>
int main(){int height[40001]={0};int friend[40001]={0};int n=0;printf("请输入孩子个数:");scanf("%d",&n);printf("请输入孩子身高:");//从左到右是从头到尾for(int i=1;i<=n;i++){scanf("%d",&height[i]);}for(int i=n;i>1;i--){ //从尾部向前找第一个比自己高的int j=i-1;        //从前一个人开始找while(height[i]>=height[j]&&j>0)j--;if(j==0)friend[i]=0;        //表示没朋友elsefriend[i]=j;        //i号位置的朋友在j号位置}for(int i=1;i<=n;i++)printf("%d ",friend[i]);return 0;
}

使用栈来避免重复的比较,单调栈的应用
1.从第一个小朋友身高开始扫描,第一个小朋友a直接压如栈中,扫描下一个小朋友b的身高,假设b后边的小朋友是c
2.若b的身高比a高,就让a出栈,理由如下:
①a不会是b的朋友
②在b后边的小朋友的朋友一定不会是a,b的朋友属性优于a,因b离后边小朋友更近且更高
3.若a的身高比b的高,则将a保留在栈中,并让b入栈,理由如下:
①a一定是b的朋友,但是b后边的小朋友的朋友,可能是a也可能是b,因a虽离得远,但是a比b高
4.栈中相邻元素中,前一个一定是后一个的朋友,朋友才会在栈中相遇相邻

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

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

相关文章

时间数据前端显示格式化

背景 在实际我们通常需要在前端显示对数据操作的时间或者最近的更新时间&#xff0c;如果我们只是简单的使用 LocalDateTime.now()来传入数据不进行任何处理那么我们就会得到非常难看的数据 解决方式&#xff1a; 1). 方式一 在属性上加上注解&#xff0c;对日期进行格式…

【Linux】Linux进度条小程序(包含色块实现)

我们再将Linux常用工具与命令都学会了之后&#xff0c; 设计进度条这个小程序可以比较好的帮助我们进行一定程度练习与巩固 目录 预备知识&#xff1a;回车换行&#xff1a;缓冲区&#xff1a; 进度条&#xff1a;准备工作&#xff1a;主题思路&#xff1a;代码实现&#xff1a…

图片保存后多了个水印?教你如何用华为手机保存无水印图片

对于各类生活App的深度用户来说&#xff0c;有时候碰到实用的生活技巧、攻略&#xff0c;甚至是一张好看的风景照&#xff0c;都会第一时间想要长按把图片保存到手机相册&#xff0c;有时候还会分享给朋友、朋友圈。 但是有些图片在App上显示的时候是干净的&#xff0c;保存下…

【AI】深度学习在编码中的应用(11)

目前&#xff0c;视觉数据的智能编码压缩技术仍处于快速发展阶段&#xff0c;其主要发展趋势反映在新架构、新内容和新场景三个维度。以下具体将从隐式神经表示、多模态视觉数据压缩和面向人机混合智能的编码三个方面展开梳理和学习。 ——隐式神经表示 隐式神经表示&#xf…

基于SQL注入漏洞的总结与归纳(个人学习 整理归纳复习

第一节 我们首先要知道什么是SQL注入漏洞 SQL注入常见的web漏洞&#xff0c;形成的主要原因是web应用程序在接收相关数据参数时未做好过滤&#xff0c;将其直接带入到数据库中查询&#xff0c;导致攻击者可以拼接执行构造的SQL语句。 像这样我们输入?id1 我们可以获得id1的信…

【QT+QGIS跨平台编译】之九:【LZ4+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、LZ4介绍二、文件下载三、文件分析四、pro文件五、编译实践一、LZ4介绍 LZ4是一种无损压缩算法,压缩速度为每核心400MB/s。 LZ4是目前效率最高的压缩算法,更加侧重于压缩/解压缩速度,压缩比并不突出,本质上就是时间换空间。 LZ4库是使用BSD许可证作为开放源码…

基于LLaMA-Factory的微调记录

文章目录 数据模型准备基于网页的简单微调基于网页的简单评测基于网页的简单聊天 LLaMA-Factory是一个非常好用的无代码微调框架&#xff0c;不管是在模型、微调方式还是参数设置上都提供了非常完备的支持&#xff0c;下面是对微调全过程的一个记录。 数据模型准备 微调时一般…

奔图P1家用激光打印机测评:小巧精致,高效便捷,开启打印新革命

在当今数字化时代&#xff0c;办公方式越来越灵活&#xff0c;日常学习也有很多作业、习题需要打印&#xff0c;无论是为了满足日常的学习、工作需求&#xff0c;还是为了追求个人兴趣、丰富业余生活&#xff0c;我们都离不开打印机的身影。打印机这个曾经被视为专业领域的设备…

每日一题——LeetCode2859.计算K置位下标对应元素的和

方法一 枚举法&#xff1a; 通过不断地将目标数值与 1 进行按位与操作&#xff0c;并根据结果判断最低位是否为 1&#xff0c;从而统计其中包含的 1 的个数。 如果1的个数等于K就加上该值。 var sumIndicesWithKSetBits function(nums, k) {function countOnes(num) {let cou…

springboot+value静态属性获取配置文件中的值的操作方法

1.配置类需要让spring管理 2.set方法不要加static 3.如果静态属性是private修饰&#xff0c;则在使用的时候&#xff0c;需要 类名.getXXX方法 如果静态属性是public修饰&#xff0c;则在使用的时候&#xff0c;需要 类名.属性名 import org.springframework.beans.factory.an…

《菊与刀》读书笔记

前言 大学期间&#xff0c;同寝室的永志大哥喜欢高晓松的《晓说》&#xff0c;受其影响&#xff0c;我也看过几期。高晓松在讲日本文化的时候&#xff0c;推荐过《菊与刀》&#xff0c;那是我第一次知道这本书。 背景 《菊与刀》的作者名叫鲁思本尼迪克特&#xff0c;大学主…

HCIA-Datacom实验指导手册:2 构建互联互通的 IP 网络

HCIA-Datacom实验指导手册:2 构建互联互通的 IP 网络 一、 实验介绍二、实验拓扑:三、实验目的:四、配置步骤:步骤 1 掌握接口 IPv4 地址的配置方法步骤 2 理解 LoopBack 接口的作用与含义,以及什么是InLoopBack0?步骤 3 理解直连路由的产生原则步骤 4 掌握静态路由的配置…

mysql8版本批量造4000个数据SQL

需求&#xff1a; 测试工作中修改单需要构造单元下4000个组合的数据&#xff0c;写个博客来记录&#xff0c;其他类似的可以举一反三。 具体sql&#xff1a; 实现1个产品1个单元下插入4000个组合数据 思路&#xff1a; 在MySQL 8中实现循环插入4000条具有不同主键的记录&a…

老旧小区火灾频发,LoRa无线系统筑牢安全防线

近日&#xff0c;全国各地多个老旧小区火灾事故频发&#xff0c;从安微合肥南二环一老旧小区居民楼起火、上海金山区一小区居民楼火灾&#xff0c;到1月24日江西新余市特大火灾......都造成了不同程度的人员伤亡和财产损失&#xff0c;令人扼腕痛惜&#xff0c;教训十分深刻。 …

ubuntu下无法访问和ping通github的一种解决方法

近期在ubuntu下突然无法访问github了&#xff0c;ping也无法ping通&#xff0c;尝试过更换不同的网络也无济于事。后来在https://blog.csdn.net/weixin_48544978/article/details/133899687 这个文章中找到了解决办法。 运气比较好&#xff0c;只按照文章中的第一步将http://…

Vue中下载不同文件常用的方式

1. 使用window.open方法下载文件 <template><div><button click"downloadFile(filel.pdf)">下载文件1</button><button click"downloadFile(file2.jpg)">下载文件2</button></div> </template> <scri…

蓝牙----蓝牙协议栈Host层

蓝牙协议栈----Host层 蓝牙物理层基本信息链路层的状态机进入连接态的步骤主动扫描与被动扫描链路层通信模式 蓝牙地址蓝牙设备地址蓝牙标识地址蓝牙接入地址 蓝牙广播信道管理蓝牙数据信道跳频 蓝牙协议栈Host层包括PHY、LL、HCL层&#xff0c;注重关注PHY物理层和LL链路层。 …

win32 窗口过程学习1

上文的MDI的win32程序会挂掉&#xff1b;下面学习和检查一下窗口过程有没有问题&#xff1b; 1 主框架窗口过程&#xff0c;FrameWndProc&#xff1b; 窗口过程主要是按分支处理消息&#xff1b; 消息&#xff0c;message&#xff0c;是过程接收的第二个参数&#xff1b; 窗口…

Charles/Fiddler将证书安装到Android系统证书下的方法

基本情况参考此帖&#xff1a;Charles 安卓抓包 unknown 和证书无效的解决方案&#xff08;无需改代码&#xff09;_client ssl handshake failed: an unknown issue occu-CSDN博客 此解决方案仅适用于已root设备默认已经在电脑上安装并配置了Charles&#xff0c;安卓手机也下载…

介绍一下OpenCV中常用的图像处理函数

OpenCV中常用的图像处理函数有很多&#xff0c;以下是其中一些函数的介绍&#xff1a; - cvLoadImage()&#xff1a;读入图像函数。 - imshow()&#xff1a;显示图像函数。 - imwrite()&#xff1a;保存图像函数。 - Mat srcImage imread()&#xff1a;读入图像函数。 - …