数组中求本元素临近下一个比它大的数(c实现)

server/2024/10/20 16:00:35/

题目描述

有一个数组,请找出数组中每个元素的下一个比它大的元素。

要求:

给定一个int数组arr以及数组大小为n,请返回一个int数组,代表每个元素比它大的下一个元素,若不存在返回-1,原数组中的元素都为正整数。

测试样例:

输入:[11,13,10,5,12,21,3] 7
输出:[13,21,12,12,21,-1.-1]

思路:

使用栈,从后往前使用一个递减栈
原数组最右边的数据,下一个最大值肯定是-1,所以栈的初始值为-1.
从后往前遍历数组:
1.如果原数组当前元素大于栈顶元素,则继续向栈底查找,一直遍历到栈值为-1或者原数组当前元素小于栈顶元素,这个栈顶元素就是要找的比本元素大的下一个元素。
2.如果原数组当前元素小于栈顶元素,栈顶元素就是要找的比本元素大的下一个元素。
3.将当前元素入栈。

代码实现

#include <stdio.h>
#include <stdlib.h>
int *next_great_data(int *arr,int n)
{int *result = (int *)malloc(n*sizeof(int));int top=-1;int stack[n];for(int i=n-1;i>=0;i--){while(top != -1 && arr[i] >= stack[top]){top--;}if(top == -1){result[i] = -1;}else{result[i] = stack[top];}stack[++top] = arr[i];}return result;
}int main()
{int array[]={2,118,9,5,12,21,7};int n = sizeof(array)/sizeof(array[0]);int *result =next_great_data(array,n);for(int i=0;i<n;i++){printf("%d ",result[i]);}printf("\n");free(result);return 0;
}

注:C++可以考虑用现有vector和stack容器实现


http://www.ppmy.cn/server/41657.html

相关文章

Java面向对象——多态

即同一个方法可以根据发送对象的不同而采用多种不同的行为方式。 一个对象的实际类型是确定的&#xff0c;但可以指向对象的引用的类型有很多&#xff08;父类&#xff0c;有关系的类&#xff09;。 多态存在的条件&#xff1a; 1. 有继承关系&#xff1b; 2. 子类重写父类…

排序(一)----冒泡排序,插入排序

前言 今天讲一些简单的排序,冒泡排序和插入排序,但是这两个排序时间复杂度较大,只是起到一定的学习作用,只需要了解并会使用就行,本文章是以升序为例子来介绍的 一冒泡排序 思路 冒泡排序是一种简单的排序算法&#xff0c;它重复地遍历要排序的序列&#xff0c;每次比较相邻…

win7下安装python,matplotlib,numpy

最近深度学习在工作中逐渐使用&#xff0c;公司说必须跟上时代&#xff0c;没有办法&#xff0c;还要加紧学习。前面《深度学习入门&#xff1a;基于Python的理论与实现 》读了2章&#xff0c;准备在公司也抽时间继续读&#xff0c;早日读完。 公司的机器是个win7&#xff0c;…

Linux环境变量详解

文章目录 1. 前言2 什么是PATH环境变量3. 如何添加PATH环境变量4. 系统中的其他环境变量5. 环境变量的由来6. 环境变量的基本操作6.1 设置环境变量6.2 通过getenv获取环境变量6.3 环境变量的应用场景 7. 通过命令行参数获取环境变量 1. 前言 本篇文章将以PATH环境变量为例来对整…

go语言基础2

1.基本数据类型 Go语言是一种强类型的静态编译语言&#xff0c;类型是高级语言的基础&#xff0c;有了类型&#xff0c;高级语言才能对不同类型抽象出不同的运算。 Go语言内置七类基本数据类型&#xff08;20个具体子类型&#xff09;。 布尔类型&#xff1a;bool 整型&#xf…

RK3568平台开发系列讲解(SPI篇)spi_dev 驱动分析

🚀返回专栏总目录 文章目录 一、结构体二、API三、spidev驱动分析3.1、init3.2、probe3.3、spidev_write3.4、spidev_read3.5、spidev_open四、spi_register_driver分析五、spi_dev缺点沉淀、分享、成长

Mirror从入门到入神

Mirror从入门到成神 文章目录 Mirror从入门到成神简介NetworkClientRegisterPrefabConnect (string address)Disconnect ()activeactiveHost NetworkServerSpawn 简介 Mirror是一个unity网络同步框架&#xff0c;基于MonoBehaviour生命周期的回调的基础上进行数值的同步&#…

【计算机毕业设计】基于SSM++jsp的高校专业信息管理系统【源码+lw+部署文档+讲解】

目录 第1章 绪论 1.1 课题背景 1.2 课题意义 1.3 研究内容 第2章 开发环境与技术 2.1 MYSQL数据库 2.2 JSP技术 2.3 SSM框架 第3章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信息流…