Java 程序实现一个数组中的两个栈10 Sept 2024 | 4 分钟阅读 在本节中,我们将创建一个在数组中实现两个栈的 Java 程序。 两个栈的含义是指两个栈都应使用相同的数组来存放元素。以下是这两个栈必须实现的一些方法。 push1(int i) -> 将 i 推入第一个栈 push2(int j) -> 将 j 推入第二个栈 pop1() -> 从第一个栈中移除顶部元素,然后返回弹出的元素。 pop2() -> 从第二个栈中移除顶部元素,然后返回弹出的元素。 注意:两个栈的实现应具有空间效率。朴素方法简单的做法是将给定的数组分成两半,然后将这些半部分用作栈。但是,这可能会导致内存使用效率低下。例如,假设给定数组的大小为 6。因此,每个栈的大小将为 3。另外,假设我们需要将 4 个元素推入第一个栈,将 1 个元素推入第二个栈。我们可以轻松地将 1 个元素放入第二个栈。 但是,我们只能将 3 个元素推入第一个栈。推入第 4 个元素将导致溢出。理想情况下,这种情况不应该发生,因为第二个栈中存在一些空闲区域(仍有 2 个元素的空间为空),可以使用。但是,我们不能将其用于第一个栈,因为它已经分配给了第二个栈。因此,我们可以说,两个栈的简单实现方法将没有空间效率。 为了使实现具有空间效率,需要根据需要分配两个栈的空间。该概念是将两个栈从输入 arr[] 的两个极端侧开始。栈 1 从左侧开始,这意味着栈 1 中的第一个元素推入索引 0。栈 2 从右侧开始。栈 2 中的第一个元素推入索引 size - 1。 两个栈都从相反的方向收缩或增长。为了检查溢出,需要关注位于两个栈顶部之间的元素空间。以下程序显示了这一点。 文件名: TwoStacksArray.java 输出 The popped element from the stack 1 is: 191 The popped element from the stack 2 is: 40 复杂度分析: 对于 push 和 pop 操作,需要恒定时间。因此,对于这些操作,时间复杂度为 O(1)。 下一主题Java Snippet |
在给定的整数数组 arr[](大小为 n)中,找到仅由素数组成的连续子数组的最大和。换句话说,不允许在选定的子数组中存在非素数。示例 1:输入:int a[] = {...
7 分钟阅读
Java 技术无需介绍。世界各地的人们仍然对 Java 在 Web 和移动开发中令人惊叹的力量感到惊叹。当然,您也可能被 Java 在软件开发中的流行度和垄断地位所吸引,并且可能想使用...
阅读 8 分钟
搜索引擎在当今的数字世界中起着至关重要的作用,使用户能够快速有效地找到相关信息。虽然创建像 Google 这样的大型搜索引擎是一项艰巨的任务,但您可以在 Java 中构建一个基本的搜索引擎来搜索一系列...
阅读 6 分钟
在 Java 中,垃圾回收是一种提供自动内存管理的机制。它由 JVM 完成。程序员无需处理对象的分配和释放。在之前的章节中,我们还讨论了垃圾回收的工作原理。如果您还不熟悉…
5 分钟阅读
栈作为一种线性数据结构,实现的是后进先出 (LIFO) 方法,因此最后添加的元素最先被移除。需要使用两个 FIFO 队列来实现 LIFO 栈,因为它们按照先进先出...
5 分钟阅读
在面向对象编程中,类是创建对象的蓝图或模板。从类创建的每个对象都有自己的一组属性(数据)和方法(函数)来定义其行为。在某些情况下,我们可能只希望一个类的实例...
阅读 4 分钟
枚举或 enum,是 Java 中一个独立的数据类型。枚举是一组统一的连接常量,如一周中的几天或方向。枚举用于提供类型安全性,从而减少错误率。这是其主要优点之一。使用……
阅读 4 分钟
反转字符串是编程中常见的项目,可以通过各种策略来实现。其中一种技术是使用 Java 中的 for 循环。在本文中,我们将了解如何...
阅读 4 分钟
java.text.RuleBasedCollator 类具有 getCollationElementIterator() 函数。使用 RuleBasedCollator 类获取指定字符串的排序元素迭代器对象。语法:public CollationElementIterator getCollationElementIterator(String source) 参数:字符串对象是此方法接受的参数。返回值:排序元素对象...
阅读 2 分钟
分数背包问题是一个优化问题,在计算机科学和运筹学中广泛用于解决问题。然而,与 0/1 背包问题不同的是,物品不必是完整的,因为在这种情况下允许分割它们以获得最大...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India