首页 > 试题广场 >

栈和排序

[编程题]栈和排序
  • 热度指数:9581 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给你一个 1 到 n 的排列和一个栈,并按照排列顺序入栈

你要在不打乱入栈顺序的情况下,仅利用入栈和出栈两种操作,输出字典序最大的出栈序列

排列:指 1 到 n 每个数字出现且仅出现一次

数据范围:  ,排列中的值都满足 

进阶:空间复杂度  ,时间复杂度 
示例1

输入

[2,1,5,3,4]

输出

[5,4,3,1,2]

说明

操作       栈     结果
2 入栈;[2]       []
1 入栈;[2\1]     []
5 入栈;[2\1\5]   []
5 出栈;[2\1]     [5]
3 入栈;[2\1\3]   [5]
4 入栈;[2\1\3\4] [5]
4 出栈;[2\1\3]   [5,4]
3 出栈;[2\1]     [5,4,3]
1 出栈;[2]       [5,4,3,1]
2 出栈;[]        [5,4,3,1,2]  
示例2

输入

[1,2,3,4,5]

输出

[5,4,3,2,1]
头像 小洋芋热爱NLP
发表于 2021-02-05 16:34:46
- 1、题目描述: - 2、题目链接: https://www.nowcoder.com/practice/95cb356556cf430f912e7bdf1bc2ec8f?tpId=117&tqId=37839&rp=1&ru=%2Factivity%2Foj&qr 展开全文
头像 NumPy
发表于 2021-08-12 15:07:24
一、题目描述 题目大意:给你一个1到n的排列和一个栈,入栈顺序给定,你要在不打乱入栈顺序的情况下,对数组进行从大到小排序,当无法完全排序时,请输入字典序最大的出栈序列注意审题:数据范围 1 <= n <= 1000000 二、算法1(贪心) 解题思路 要使得出栈序列字典序最大,首先想到 展开全文
头像 LifelongCode
发表于 2021-02-04 15:26:37
读入数据:第i个数出栈满足字典序最大,一定是i+1到n中最大的一个数用一个数组maxs存i-n之间最大的数按照读入顺序入栈,如果当前入栈第i个数字比将要入栈的剩余元素都要大 那么这个元素出栈因为让入栈的第i个元素,比将要入栈的i+1到n的元素都大时出栈,总能保证字典序最大 public class 展开全文
头像 认认真真coding
发表于 2021-07-27 15:06:39
题目描述给你一个1->n的排列和一个栈,入栈顺序给定你要在不打乱入栈顺序的情况下,对数组进行从大到小排序当无法完全排序时,请输出字典序最大的出栈序列 方法一:暴力求解--逆序记录后续最大元素 求解思路对于本题目,无论是由大到小输出还是按字典序最大输出,都是要求大数在前,小数在后。因此元素何时出 展开全文
头像 程序员学长
发表于 2021-11-11 20:50:14
栈和排序 问题描述 给你一个由1~n,n个数字组成的一个排列和一个栈,要求按照排列的顺序入栈。如何在不打乱入栈顺序的情况下,仅利用入栈和出栈两种操作,输出字典序最大的出栈序列。 排列:指 1 到 n 每个数字出现且仅出现一次。 示例: 输入:[2,1,5,3,4] 输出:[5,4,3,1,2] 分析 展开全文
头像 牛客768685351号
发表于 2022-03-12 11:12:47
class Solution { public: /** * 栈排序 * @param a int整型一维数组 描述入栈顺序 * @param aLen int a数组长度 * @return int整型vector */ vecto 展开全文
头像 太阳hxy
发表于 2023-08-28 12:01:10
class Solution { public: vector<int> solve(vector<int>&a) { //ans用来存最后的答案,f数组用来存后面要入栈的剩余元素中的最大值 //倒序处理最大值 展开全文
头像 泪无声呢
发表于 2021-10-12 22:22:30
栈和排序 描述 给你一个 1 到 n 的排列和一个栈,并按照排列顺序入栈,你要在不打乱入栈顺序的情况下,仅利用入栈和出栈两种操作,输出字典序最大的出栈序列。排列:指 1 到 n 每个数字出现且仅出现一次 示例 输入:[2,1,5,3,4] 返回值:[5,4,3,1,2] 展开全文
头像 wrdoct
发表于 2022-06-15 13:37:49
class Solution { public: /** * 栈排序 * @param a int整型一维数组 描述入栈顺序 * @param aLen int a数组长度 * @return int整型vector */ vecto 展开全文
头像 摸鱼学大师
发表于 2021-07-21 18:55:29
思路: 题目的主要信息: 入栈顺序为给定的数组的顺序 在不打乱入栈顺序的前提下尽量做到由大到小排序输出入栈的元素 若无法办到,需要按字典序最大输出 无论是由大到小输出还是按字典序最大输出,都是要求大数在前,小数在后。这些元素都是按照数组顺序进栈的,何时出栈取决于它们后面是否还有比它们更大的元素进 展开全文

问题信息

上传者:牛客332641号
难度:
19条回答 4473浏览

热门推荐

通过挑战的用户

查看代码