LeetCode 程序员面试金典 面试题 03.05. 栈排序

【Leetcode每日一题】面试题 03.05. 栈排序 阅读详情

栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。

示例1:

输入:
[“SortedStack”, “push”, “push”, “peek”, “pop”, “peek”]
[[], [1], [2], [], [], []]
输出:
[null,null,null,1,null,2]
示例2:

输入:
[“SortedStack”, “pop”, “pop”, “push”, “pop”, “isEmpty”]
[[], [], [], [1], [], []]
输出:
[null,null,null,null,null,true]

用一个辅助栈,维持data栈的有序状态,(每次弹出一些元素到辅助栈,方便新的元素插入到所需位置,然后再从辅助栈中压回去)

class SortedStack {
    public Stack<Integer> data;
    public Stack<Integer> help;
    public SortedStack() {
        data = new Stack<>();
        help = new Stack<>();
    }

    public void push(int val) {
        if(data.empty() || data.peek() >= val) {
            data.push(val);
            return ;
        }
        while (!data.empty() &&data.peek() < val) {
            help.push(data.pop());
        }
        data.push(val);
        while(!help.empty()) {
            data.push(help.pop());
        }
    }

    public void pop() {
        
        if(!data.empty())
        data.pop();
    }

    public int peek() {
        
        if(!data.empty())
        return data.peek();
        return -1;
    }

    public boolean isEmpty() {
        return data.isEmpty();
    }
}
LeetCode刷题记录---程序员面试金典(第 6 版) 阅读详情

相关推荐

Mid-360激光雷达与Fast-LIO2实战:从环境搭建到实时点云建图

本文提供Livox Mid-360激光雷达与Fast-LIO2算法从零开始的实战教程。详细介绍了在Ubuntu和ROS环境下进行系统配置、依赖安装、硬件连接与网络设置的完整流程,并指导如何运行算法实现实时点云建图与可视化,最后总结了关键参数调优与常见问题排查方法。

weixin_29300241的博客 152

leetcode:栈排序(使栈顶为最小的值)

思路: 1.使用双向链表进行栈的模拟。 2.每次入栈都与当前栈中元素按栈顶依次进行比较,然后插入到合适的位置。 typedef struct { int val; struct Node *next; struct Node *previous; }Node; typedef struct { Node *head; Node *current;//指向...

ms1003的博客 407

从SIGGRAPH审稿人视角看:什么样的TOG论文更容易被接收?

本文从SIGGRAPH审稿人视角深入解析TOG论文的审稿标准与投稿策略,揭示如何提升论文接收概率。重点探讨创新性、技术深度、实验验证等核心评分维度,并提供写作技巧与审稿意见应对策略,帮助研究者优化ACM Transactions on Graphics投稿质量。

weixin_33721344的博客 108

Leetcode 栈输出之排序

题目描述 给你一个1->n的排列和一个栈,入栈顺序给定 你要在不打乱入栈顺序的情况下,对数组进行从大到小排序 当无法完全排序时,请输出字典序最大的出栈序列 示例1 输入 复制 [2,1,5,3,4] 输出 复制 [5,4,3,1,2] 说明 2入栈;1入栈;5入栈;5出栈;3入栈;4入栈;4出栈;3出栈;1出栈;2出栈 基本思路: 容易知道,第一个输出的数字一定是最大的那个数字,其操作为一直入栈到最大的数字,然后弹栈输出该最大的数字 那么第二输出...

一只老风铃 1415

避开STM32H7的‘保护陷阱’:从Option Byte机制深度解析读写保护原理与预防

本文深度解析STM32H723VGT6的Option Byte保护机制,详细讲解RDP读保护和WRP写保护的工作原理及配置方法,并提供硬件设计防御策略和软件预防性编程技巧,帮助开发者避免误触发保护机制导致芯片锁定的问题。

weixin_33686714的博客 441

疑难问题(二)——PyTorch 2.3.0 ‘import torch‘ 错误排查:深入解析‘shm.dll‘加载失败与系统路径修复

本文深入解析了在Windows系统上安装PyTorch 2.3.0后,执行'import torch'时遇到的'shm.dll'加载失败错误(OSError)。该问题通常源于系统DLL搜索路径缺失,导致无法找到关键的共享内存通信组件或其依赖项。文章提供了核心解决方案:通过手动修改PyTorch的`__init__.py`文件,将用户基目录下的Library\bin路径添加到DLL搜索列表中,从而从根本上修复此导入错误,并给出了详细的修改步骤和验证方法。

weixin_29056865的博客 305

力扣 面试题 03.05. 栈排序

两个栈,一个维护递减序列,一个维护递增序列。一个的栈顶是该栈中最小的元素,一个的栈顶是该栈中最大的元素,且最大的元素小于另一个栈顶最小的元素 每次push时可以看作一个拨算盘的过程,使得最小顶大于val,最大顶小于val,然后插入栈顶即可 pop时则需要把算盘的最大顶的一边全部拨过来,然后取栈顶即可 class SortedStack { Deque<Integer> d1; Deque<Integer> d2; public SortedStack().

eyvr的博客 223

Trae CN 使用入门指南

【代码】Trae CN 使用入门指南。

weixin_42551921的博客 8764

队列和栈面试题(一)— 请编写一个程序,按升序对栈进行排序,要求最多只能使用一个额外的栈存放临时数据

题目:请编写一个程序,按升序对栈进行排序,要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。

HuangQinJian 5691

c# 开发串口调试助手 Visual Studio 2019

串口调试助手是用于在开发、测试和调试串口通信应用程序时进行串口数据的监视和交互的工具。

2301_76792852的博客 8060

NVIDIA DGX Spark (Ubuntu 24.04) 部署Isaac Sim与Isaac Lab:二进制安装与ROS2集成实战

本文详细介绍了在NVIDIA DGX Spark工作站(Ubuntu 24.04系统)上,通过预编译二进制包稳定部署Isaac Sim与Isaac Lab的完整实战流程。文章重点剖析了二进制安装相较于源码编译和pip安装的优势,有效规避了CUDA、PyTorch等关键组件的版本冲突陷阱,并逐步指导完成环境配置、Isaac Lab集成、Conda环境管理以及ROS2 Jazzy的集成,最终构建出完整的机器人仿真与强化学习开发平台。

kite3的博客 396

LeetCode《程序员面试金典》面试题 03.05. 栈排序

LeetCode 面试题 03.05. 栈排序题目解题 题目 解题 《程序员面试金典》上是对一个已有栈进行排序,但是思路是一样的,解释直接放在代码注释里面。 // javascript var SortedStack = function() { this.stackSorted = []; this.stackTemp = []; }; /** * @param {number} val * @return {void} */ SortedStack.prototype.p

151

冷源法测试噪声系数(Noise Figure)详细步骤

背景知识 电阻负载的功率谱密度 噪声等效模型 3 4 冷源法测试步骤 注意事项

eleday的电子世界 6871

《程序员面试金典》解题目录(更新完毕)

题目来源于LeetCode上的《程序员面试金典》,这里做一个目录方便大家查找。另外有本人的LeetCode解题目录、《剑指Offer》解题目录可点击链接查看。

Michael是个半路程序员 6409

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

程序员面试金典总结 - leetcode 程序员面试金典系列

程序员面试金典总结

随便发挥的博客 857

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【算法专题】《程序员面试金典 - 学习计划 - 力扣(LeetCode)》学习大纲 & 学习笔记(持续更新中......)

【算法专题】程序员面试金典 - 学习计划 - 力扣(LeetCode)

Shipley_Leo的博客 3402

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LeetCode专题 ——《程序员面试金典》

文章目录 下面只给出答案,具体题目请参考:LeetCode专题 ——《程序员面试金典》

aift的专栏 1709

LeetCode程序员面试金典(第 6 版)上

LeetCode程序员面试金典(第 6 版)上

u011895157的博客 1154

【程序员面试金典】 03.05. 栈排序

1.题目 栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。 示例1: 输入: ["SortedStack", "push", "push", "peek", "pop", "peek"] [[], [1], [...

Syntactic Sugar 201

力扣——程序员面试金典109题刷题笔记1(数组与字符串)

力扣刷题笔记1

瓜洲的博客 755

力扣OJ(6x)LCS、面试题

。。

nameofcsdn的博客 2279

LeetCode程序员面试金典(第 6 版)中

LeetCode程序员面试金典(第 6 版)中

u011895157的博客 1235

C#LeetCode刷题-程序员面试金典

本文由比特飞原创发布,欢迎大家踊跃转载。 转载请注明本文地址:https://www.byteflying.com/archives/5102。 C#LEETCODE刷题概述 概述 所有LeetCode程序员面试金典类算法题汇总。 程序员面试金典篇 # 题名 刷题 面试题 01.01 判定字符是否唯一 面试题 01.02 判定是否互为字符重排 面试题 01.03 URL化 面试题 01.04 回...

比特飞 1000

程序员面试金典1-5

Leetcode程序员面试金典1-5

wy2458984254的博客 540

程序员面试题03

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例

pH2002的博客 221
上一篇: LeetCode 程序员面试经典面试题 04.06. 后继者
下一篇: LeetCode 面试金典面试题 02.06. 回文链表
wenkun97
博客等级 码龄10年 15粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值