算法总结之 用一个栈实现另一个栈的排序

别再问“这游戏啥引擎做的”了,手把手教你用SteamDB一键查询(附实战案例) 本文详细介绍了如何使用SteamDB一键查询游戏引擎信息,包括Unity 3D、Unreal Engine等热门引擎的识别方法。通过实战案例和高级查询技巧,帮助玩家快速获取游戏技术底细,优化游戏体验和兼容性分析。 阅读详情

算法总结之 用一个栈实现另一个栈的排序

用一个栈实现另一个栈的排序

 

一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序。只允许申请一个栈。除此之外可以申请新的变量,但不能申请额外数据结构

 

思路: 将要排序的栈记为 stack, 申请的数组栈记为help。 

         stack上执行pop操作, 弹出的元素记为cur

    

     如果cur <= help.peek()   则将cur直接压入help

     如果 cur>help.peek()  将help元素逐一弹出,最后将help中的所有元素弹出逐一压入stack   直到cur小于 help.peek() 

    一直执行这样的操作,直到stack中的全部元素压入到help。 最后将help中的所有元素注意压入stack

 

package TT;

import java.util.Stack;

public class Test123 {

    public static void sortStackBystack(Stack<Integer> stack){
    	 
    	  Stack<Integer> help  = new Stack<Integer>();
    	  
    	  while(!stack.isEmpty()){
    		  int cur = stack.pop();
    		  while(!help.isEmpty() && help.peek()<cur){
    			  stack.push(help.pop());
    		  }
    		  help.push(cur);
    	  }
    	while(!help.isEmpty()){
    		stack.push(help.pop());
    	}
    	
    }
	
	
	
}

  

     

 

posted @ 2017-09-12 19:51 toov5 阅读( ...) 评论( ...) 编辑 收藏
WSL2迁移后用户名不见了?一招教你快速恢复Ubuntu22.04默认用户 本文针对WSL2迁移后Ubuntu 22.04默认用户名丢失的常见问题,提供了详细的诊断与修复方案。通过分析迁移底层逻辑,指导用户使用`ubuntu2204.exe config --default-user`命令或配置`/etc/wsl.conf`文件快速恢复用户身份,并涵盖权限修复、冲突解决及自动化迁移脚本等进阶内容,确保子系统迁移后环境完整可用。 阅读详情

相关推荐

Java使用easyExcel生成excel文件直接写入邮件附件并发送

1.引入pom依赖 <!-- email --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <!-- easyexcel需要依赖poi jar包 --> <depe

weixin_50493320的博客 3910

用一个栈实现另一个栈的排序

用一个栈实现另一个栈的排序 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排列,只需申请一个栈,除此之外,可以申请新的变量,但不能申请额外的数据结构,如何完成排序? 思路: 先将有数据的栈中的数据在辅助栈中从顶到底按从小到大的顺序排序,实现方法:数据栈中的元素依次出栈,如果辅助栈不为空,每个出栈的元素都和辅助栈栈顶的元素做比较,如果栈顶的元素小,那么就将辅助栈的元素出栈并加入到数据栈,直到栈顶的元素较大时停止,然后将元素入栈,一直循环,直到数据栈为空停止,然后将辅助栈中的元素再依次加入到数据

qq_40960765的博客 298

EBS开发_离散工单创建API

--以下代码于20171213在TONY环境中实现 DECLARE     l_iface_rec    wip.wip_job_schedule_interface%ROWTYPE; --工单任务接口表     l_group_id     NUMBER;     l_returnstatus VARCHAR2(40);     l_errormsg     VARCHAR2(2000

蜗牛先生快跑的博客 2596

牛客网. 用一个栈实现另一个栈的排序

题目概述 解题思路 两种思路:其一是每次比较一下当前栈中top元素和下一个元素的大小,然后把小的/大的放到另一个栈中;这样清空一遍以后,相当于把一个数组的相邻元素大小都比较了一遍;然后我们反过来再进行类似的操作,把大的/小的放到另一个栈中,如此反复,直至某次操作以后,不再需要我们颠倒top和下一个元素的顺序,表明排序结束。 另一种做法是:将排序的栈记为A,辅助的栈记为B,在A上pop元素,记得到的元素为a。如果a不大于B的栈顶元素/B为空,则将a放入B;如果a大于B的栈顶元素,则将B中元素依次放入

georgeandgeorge的博客 161

别再傻傻分不清PBR和NPR了!从《原神》到《双城之战》,聊聊游戏里那些让你眼前一亮的渲染风格

本文深入解析了PBR(基于物理的渲染)与NPR(非真实感渲染)在游戏视觉风格中的应用差异,通过《原神》和《双城之战》的案例,展示了两种渲染技术如何创造出截然不同的艺术效果。从技术原理到实战案例,帮助读者理解如何根据项目需求选择合适的渲染风格。

weixin_30425949的博客 148

FPGA实现DDR接口

verilog// DDR2控制器状态机// 初始化序列// 发出初始化命令endendendend// 自动预充电end// 其他状态...endcaseendend。

whm128的博客 1001

【C#算法实现】用一个栈实现另一个栈的排序

本文用C#实现了《程序员代码面试指南》中的用一个栈实现另一个栈的排序。

qq_44951699的博客 650

3、结合物理学与深度学习的连续时间动力学模型

本文探讨了如何结合物理学原理与深度学习技术,构建连续时间动力学模型,以提升机器人系统对复杂动态环境的建模与控制能力。重点介绍了深度拉格朗日网络(DeLaN)和深度哈密顿神经网络(HNN)的理论基础及其在模拟与物理系统中的实验表现,并展示了其在逆向模型、前向模型以及能量控制任务上的优越性能。文章还分析了当前方法的局限性,并提出了未来研究方向,如接触处理、广义坐标学习及优化损失函数等。

linux的博客 909

【算法编程】用栈实现另一个栈的排序

【算法编程】用栈实现另一个栈的排序   给定一个栈,对其进行排序,使得栈顶至栈底的为降序,只能申请一个栈和变量,不能使用数组或多余的栈等数据结构.   试题来源:Coding Interviewing Guided (Page 12)   难度:★★★☆☆ 思路一 C++源码: //用一个栈实现另一个栈的排序 //给定一个栈,对这个栈进行排序,使得栈顶至栈底的元素为降序排列,注意,只允许创建另一个栈,或相关的变量,不能使用数组等数据结构 #include <iostream> #include

夏栀的博客 590

计算机视觉教程2-3:图解双线性插值算法&最近邻插值算法

提出此算法的背景是基于图片的缩放,在图片缩放的过程中,实质上就是将原图像像素矩阵像素值,填到目标图像像素矩阵中,目标图像像素矩阵可能比原图像像素矩阵大(图片放大),也可能小(图片缩小)。我们假设图片的宽(WidthWidthWidth)和高(HeightHeightHeight)是按同比例缩放的,那么 srcXsrcWidth=dstXdstWidth\frac{srcX}{srcWidth}= \frac{dstX}{dstWidth}srcWidthsrcX​=dstWidthdstX​ ...

FRIGIDWINTER的博客 7286

Oracle 11g安装教程(保姆级超详细安装教程)

Oracle详细安装步骤,每一步都配有图例引导 ORACLE是数据库(Oracle服务端)。是连接数据库的客户端(Oracle客户端)。是连接oracle的可视化客户端软件。

2302_81846649的博客 1万+

【算法题】用一个栈实现另一个栈的排序

题目 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序? 思路 将要排序的栈记为stack,申请的辅助栈记为help,在stack上执行pop操作,弹出的元素记为cur. 如果cur小于或等于help的栈顶元素,则将help直接压入help 如果cur大于help的栈顶元素,则将help的元素逐...

梓莘 355

基于STM32L4XX、HAL库的AP6275S WIFI 模块驱动程序设计

支持802.11a/b/g/n/ac/ax (Wi-Fi 6)标准。// 这部分通常依赖于Broadcom提供的固件和驱动。// 这里需要添加Wi-Fi固件加载和初始化的代码。// 通常需要通过SDIO发送命令和接收响应。// 这里需要添加蓝牙HCI初始化代码。// 处理Wi-Fi和蓝牙数据。// 这里需要实现Wi-Fi连接逻辑。// 初始化SDIO和UART。// 确保蓝牙使能引脚已设置。// 关闭Wi-Fi和蓝牙。// 关闭Wi-Fi和蓝牙。// 打开Wi-Fi和蓝牙。// 初始化AP6275S。

zhusl6688的博客 277

用一个栈实现另一个栈的排序(每日一道算法题)

要求:不能使用其他数据结构,只能使用一个栈加一个新的变量,实现对一个整数类型的栈排序。package stack;import java.util.Stack;/** * @author:MindMrWang *2017年11月17日 *:function:利用一个辅助栈和一个变量将一个栈从顶到底从大到小排序 */ public class sortStackByStack { pu

MindMrWang的blog 1017

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【左程云Java算法】Chapter1-5:用一个栈实现另一个栈的排序

Chapter1-5:用一个栈实现另一个栈的排序【题目】用一个栈实现另一个栈的排序【要求】一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?【难度】士★☆☆☆【解答】将要排序的栈记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记为cur。如果cur小于或等于help的栈顶元素,则将cur直接压入help;

知识无止境 2689

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

算法笔记002——用一个栈实现另一个栈的排序

用一个栈实现另一个栈的排序 思路:为了实现一个栈的从大到小的排序(栈顶到栈底),需要考虑一个事实,如果我们每次都往辅助栈中存放当前剩余的最大的值,最后直到当前栈空了,再把辅助栈转移回去就可以完成排序。 【思路】利用help栈完成从上到下的顺序是从小到大,然后反压入原来栈就可以 先弹出原来stack的栈顶元素,记为cur 如果help为空,或cur小于help的栈顶元素(help.peek()),则将cur压入help 否则,把help里面大于cur的栈顶元素pop出来,压入原来的stack,再往help里

tuanzi2809的博客 186

算法题-栈和队列-05-用一个栈实现另一个栈的排序

题: 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序? 解答: 将要排序的栈标记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记为cur。 如果cur小于或等于help的栈顶元素,则将cur直接压入help; 如果cur大于help的栈顶元素,则将he...

qq_29434541的博客 175

(算法优化) 栈和队列(5)--用一个栈实现另一个栈的排序

题目: 一个栈元素的类型为整数,现在要想将该栈从顶到底按从大到小的顺序排列,只允许申请一个栈,除此之外, 可以申请一个变量,可以申请额外的变量,但是不能申请额外的数据结构,如何完成排序? 解析: 这道题的思路太简单了,设置两个栈stack和help,用一个中间变量存取stack每次弹出的元素temp,用temp和help的栈顶元素比较,当temp更大的时候,将help中的元素全部加入sta...

QiuGuoJing的博客 256

算法——利用两个栈实现栈排序

栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。 leetcode. 思路:利用两个栈,分别实现大顶堆和小顶堆,以小顶的栈为主栈,另一个栈为辅助栈,其中小顶的栈的数据全部会大于大顶的栈的数值。当添加数据的时候,分为三种情况: 如果该数据的值小于小顶的顶值,同时大于大顶的顶值:那么直接将数据压倒小顶的栈。 如果数据大于小.

Think Different. 2109

栈与队列:用一个栈实现另一个栈的排序(C++带对数器版)

//★题目:用一个栈实现另一个栈的排序 //要求:一个栈中的元素类型为整型,实现该栈从顶到底从大到小的顺序排序,只允许申请一个额外的栈和若干变量 //分析:如果cur小于或等于help的栈顶元素,则将cur直接压入help // 如果cur大于help的栈顶元素,则将helo的元素逐一弹出,逐一压入stack // 直到cur小于或等于help的栈顶元素,再将cur压入...

懂代码的暖男 331

【面试题】:一个栈实现另一个栈的排序

只用一个栈实现另一个栈的排序ProblemSolution Problem 要求: 只用一个栈,实现另一个栈的排序,除了变量之外不可用任何类型数据结构 Solution #include &amp;lt;iostream&amp;gt; #include &amp;lt;stack&amp;gt; using namespace std; void sortStack(stack&amp;lt;int&amp;gt; &amp;am

tianxieeryang的博客 300

用栈实现队列操作;递归逆序一个栈;栈的排序

算法1: 题目:编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek) {代码} /** * 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek) * 两点必须做到:(1)如果stackPush要往stackPop中压入数据,必须一次性全部压完; * (2)如果stackPop不为空,stackPush绝对不能像st

菜鸟题巢 1057

【算法】【栈和队列模块】只用一个栈来排序另一个栈

插入排序、栈排序

qq_39760347的博客 219

排序算法------栈排序

前言: 栈排序,是利用栈的特性进行排序的,这里就是指先进后出这个特性。 例题 : 这里可以允许用到两个栈,也就是多用一个辅助栈。 具体思路:就是循环遍历元素,当发现入栈的元素x要比栈顶要大的时候,则循环将栈顶小于x的元素放到辅助栈中,然后把x入栈,最后把辅助栈的元素重新入栈。 # include <iostream> # include <algorithm> # include <cstdlib> # include <cstdio> # include

weixin_43743711的博客 2405

栈元素排序

最多用一个栈进行排序,最小的位于栈顶 #include &amp;lt;iostream&amp;gt; #include &amp;lt;cstdio&amp;gt; #include &amp;lt;stack&amp;gt;//直接引用头文件 内含栈的定义 using namespace std; stack&amp;lt;int&amp;gt; b; stack&amp;lt;int&amp;gt; c;

curiosity9的博客 965

算法题解 —— 栈(1-5)

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。 第一章 栈和队列 1. 设计一个有 getMin 功能的栈: 题目描述: 实现一个特殊的栈,在实现栈的基础上,再实现返回栈中最小元素的操作。 解题思路: 在设计时,我们使用两个栈,一个栈用来保存当前栈中的元素,其功能和一个正常的栈没有区别,这个栈记为 stackData;另一个栈记为 stackMin。具体的实现方式有两种:(一般情况下) 数据压栈时,先对 stackMin 进行判断,如果小于等于栈顶元素,压入 stack

paynmind的博客 481

栈排序,只能使用额外的一个栈空间 && 有道一面

题目就是栈中存的整数,对其做一个排序。哎当时没写出来。。。。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 importjava.util.Stack; publicclass栈排序{ ...

weixin_33937913的博客 100
上一篇: 算法总结之 如何用递归函数和栈操作逆序一个栈
下一篇: 操作系统进程与线程
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值