首页 > 编程语言 >Java面试之用一个栈实现另一个栈的排序

Java面试之用一个栈实现另一个栈的排序

时间:2023-09-03 20:01:01浏览次数:34  
标签:Java cur 压入 元素 pop 面试 排序 stack help

一 题目

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

二 要求

将要排序的栈记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记为cur。

1.如果cur小于或等于help的栈顶元素,则将cur直接压入help;

2.如果cur大于help的栈顶元素,则将help元素逐一弹出,逐一压入stack,直到cur小于或等于help栈顶元素,再将cur压入help。

一直执行上述操作,直到stack中全部元素都压入到help。最后将help中所有元素逐一压入stack,即完成排序。

三 代码实现

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());
    }
}

标签:Java,cur,压入,元素,pop,面试,排序,stack,help
From: https://blog.51cto.com/u_16244372/7342862

相关文章

  • 无涯教程-JavaScript - TTEST函数
    TTEST函数取代了Excel2010中的T.TEST函数。描述该函数返回与学生t检验相关的概率。使用TTEST来确定两个样本是否可能来自均值相同的相同两个基础总体。语法TTEST(array1,array2,tails,type)争论Argument描述Required/OptionalArray1Thefirstdataset.Required......
  • Java中使用ProcessBuilder执行命令
    在Java中我们可以使用ProcessBuilder来创建一个进程并执行命令。在使用前我们首先了了解下两个程序。一、认识命令行解释程序不论在windows中还是linux中都可以通过命令行方式来执行某些程序或脚本,而解析命令行的程序被称为shell,其本身是一种命令行解释器,用于与操作系统进行交互和......
  • Java对象从创建到回收全过程
    先了解下Java虚拟机内存组成,当Java虚拟机启动后,会将系统分配给JVM的空间逻辑上划分为堆、虚拟机栈、本地方法栈、方法区、程序计数器五个部分,如下图所示:堆:放置new出来的对象、数组虚拟机栈:线程运行前,会给其分配一个线程栈空间,线程中每个方法执行都会生成一个栈帧放入线程栈中,栈帧里......
  • Java内存模型(JMM)详解
    面试官:讲讲什么是JMMJMM(Java内存模型)详解1什么是JMM?JMM就是Java内存模型(JavaMemoryModel)JMM是一个抽象的概念,他描述的是和多线程相关的一组规范,需要各个JVM的实现来遵守JMM规范,以便于开发者可以利用这些规范,更方便的开发多线程程序。这样一来,即使同一个程序在不同的虚拟......
  • 无涯教程-JavaScript - TINV函数
    TINV函数取代了Excel2010中的T.INV.2T函数。描述该函数返回学生t分布的两尾逆。语法TINV(probability,deg_freedom)争论Argument描述Required/OptionalProbabilityTheprobabilityassociatedwiththetwo-tailedStudent'st-distribution.RequiredDeg_freedom......
  • java基础-方法method-day05
    1.语法[修饰符]返回值类型方法名(形参列表){逻辑主体}publicclassTestMethod01{ publicstaticintadd(intnum1,intnum2){ intsum=0; sum+=num1; sum+=num2; returnsum; } publicstaticvoidmain(String[]args){ intsum1=add(10......
  • 东方博宜OJ1010 数组元素的排序 C语言版
    题目描述对数组的元素按从小到大进行排序。输入第一行有一个整数 n ( 5≤n≤10 );第二行有 n 个整数,每个整数的值在 [0,109]的范围内。输出输出排序后的数组。样例输入812368745输出12345678来源数组问题代码 #incl......
  • JavaGuide基础3
    异常Exception和ErrorException:程序本身可以处理的异常,可以通过catch来进行捕获。Exception又可以分为CheckedException(受检查异常,必须处理)和UncheckedException(不受检查异常,可以不处理)。Error:Error属于程序无法处理的错误,不建议通过catch捕获。例如Jav......
  • JavaScript – 小技巧 Tips
    1e6等价于1+后面6个零console.log(1e6===1_000_000); 模拟C#的Record DeconstructclassSizeimplementsIterable<number>{constructor(publicwidth:number,publicheight:number){}*[Symbol.iterator](){......
  • IDEA2022.3.1创建JavaWeb项目步骤
    IDEA2022与2021相比,更新后创建新项目时少了JavaWeb项目选项,关于2022版创建JavaWeb项目步骤如下:创建maven项目,填写好后直接点击create即可,项目名称可根据自身情况自己命名。 2.在pom.xml肿设置打包方式为war包。3.补齐MavenWeb项目缺失的webapp目录结构  4......