Java Program to Rearrange The Array in Alternating Positive & Negative Items With O(1) Extra Space2025年5月3日 | 阅读4分钟 问题陈述给定一个整数数组,一个好的排列是正数和负数交替放置。如果多余的数字是正数或负数,由于不可能有相等数量的正负数来完美地交替它们,多余的数字应保留在数组的末尾,方向为从正到负。 此外,我们的解决方案应遵循 O(1) 的空间复杂度,这意味着只能对问题中提供的数组执行操作。 示例 例如,如果数组是 [3, -2, 5, -4, 1, -6],一个有效的解决方案可以是 [3, -2, 5, -4, 1, -6],其中正数跟随负数,或负数跟随正数,或者任何其他顺序,但正数和负数之间没有间隔。 问题解决方案要就地解决此问题,我们将遵循以下主要步骤: 按符号划分数组: 通过简单的扫描将数组中的正数和负数分开。这将帮助我们识别错放的元素(例如,本应是负数的位置上出现了一个正数)。 按交替顺序放置元素: 遍历数组以确保元素按照正确的交替顺序排列。如果某个位置上的元素不符合要求的交替顺序,则将其与稍后符合要求的元素进行交换。 执行原地重排: 由于我们目标是 O(1) 的额外空间,所有交换都将在数组本身内完成,在原地调整元素,而无需额外的内存开销。 文件名:AlternatingPositiveNegative.java 输出 Rearranged array: 3 -2 5 -4 1 -6 复杂度分析时间复杂度: 由于每个元素都被检查一次并根据需要进行交换和排列,因此时间复杂度为 O(n)。 空间复杂度: 通过原地交换,我们可以实现 O(1) 的空间复杂度,因为除了给定数组使用的空间外,没有使用任何其他额外空间。 需要考虑的边缘情况全正数或全负数: 否则,如果数组中的所有元素都是正数或所有元素都是负数,则函数不会以任何方式交换其元素,因为实际上不存在交替过程的可能性。 更多的正数或负数: 如果数组中正负元素的数量不相等,则剩余的元素将位于数组的末尾,即使数组元素已按交替方式排列。 单元素数组: 包含单个元素的数组的第一个也是最后一个组件将保持不变,因为不需要进行任何交替。 原地解决方案的优点原地重排对于大型数组非常有益,因为它不需要额外的存储空间。因此,通过避免额外的数据结构,我们可以确保算法具有较小的内存占用,从而可以在内存空间有限的环境中使用。 结论该方法为重新组织数组的问题提供了一种明显而有效的解决方案,使得任何正数跟随负数或反之,而无需依赖 O(1) 的额外空间和 O(n) 的时间。原地交换实现了内存效率和对大型数据集的性能。 这种翻转排列的问题解决模式在多种场景下都很有用,包括数据分析、切换排序模式以及在界面设计中呈现匹配良好的结果。 |
在 Java 中,Vaadin 框架是一个用于开发 Web 应用程序的开源框架。由于它同时支持 JavaScript 和 AJAX,因此我们可以使用它们。通过使用 Google Web Toolkit,我们可以将其包含外部功能。Vaadin 框架渲染丰富的...
5 分钟阅读
约瑟夫问题是一个关于特定淘汰游戏理论问题。它以犹太历史学家 Flavius Josephus 的名字命名,他根据传说,创造了这种方法来逃避在围攻期间被俘。问题陈述 n 个人站成一个圆圈,...
阅读 10 分钟
这是 Google、Amazon、TCS、Accenture、Flipkart 等顶级 IT 公司面试中经常提出的问题。通过解决问题,人们希望检查应聘者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,我们将...
阅读 8 分钟
在本节中,我们创建了几个 Java 程序来检查给定数字是否为完全平方数。完全平方数或平方数是整数的平方的正整数。换句话说,当我们乘以两个相同的数字时……
阅读 6 分钟
BiConsumer 接口接受两个输入参数,不返回任何结果。它是 Consumer 接口的二元特化。它提供一个函数式方法 accept(Object, Object) 来执行自定义操作。方法 方法说明 void accept(T t, U u) 它对给定的参数执行此操作。 default BiConsumer<T,U> andThen(BiConsumer<?...
阅读1分钟
在 Java 中,局部变量可以在条件块(如 if 语句和 switch 语句)、while 循环、for 循环和 try 块中进行初始化。它允许基于指定条件对代码进行条件执行。然而,了解初始化时的含义和注意事项很重要...
阅读 4 分钟
在本节中,我们将了解什么是拉马努金数(或哈代-拉马努金数)以及如何通过 Java 程序检查该数字是否为拉马努金数。拉马努金数 在数学中,拉马努金数是一个神奇的数字。它可以定义为最小的数字,它……
阅读 4 分钟
给定一个整数数组“arr”和一个整数 k。我们有一个空栈和以下两个操作:“Push”和“Pop”。我们还有一个区间为 [1, k] 的整数流。使用两个栈过程将数字推入栈中...
阅读 16 分钟
Java ImageIO 类是 javax.imageio 包中的一个 final 类。该类提供了用于读取和写入图像以及执行简单编码和解码的便捷方法。该类提供了许多与图像处理相关的实用方法。使用该类,我们...
阅读 4 分钟
Java 中的考试座位安排涉及设计一个程序,为学生分配考场座位,确保公平性和遵守特定规则,例如通过分隔朋友或相似的准考证号来防止作弊。它通常包括排序、网格分配和以编程方式应用约束...
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India