Java 中链表中的下一个较大节点2025年5月12日 | 阅读 7 分钟 给定一个整数链表 L,任务是返回一个整数链表,其中包含给定链表中每个元素的下一个更大元素。如果没有任何元素有更大的元素,则为其输入 0。 示例 1 输入 head = [1, 3, 2, 4] 输出 链表中的下一个更大元素是 [3, 4, 4, 0] 解释
示例 2 输入 head = [2, 1, 5] 输出 链表中的下一个更大元素是 [0, 2, 0] 解释
方法:使用暴力算法该代码使用分层遍历链表,采用暴力方法,最坏情况下时间复杂度为 O(n²)。结果存储在 O(n) 的空间复杂度中,因为它使用了大小为 n 的数组 (res[])。由于它按顺序测试每个节点与所有后续节点,而不是使用最优的单调栈技术,因此对于大型列表效率不高。在遍历之前,会调用 sizeOfList() 方法,这会增加 O(n) 的开销来确定列表的大小。此外,由于 push() 将元素放在头部,因此列表的构造顺序与插入顺序相反。为确保输出可读,应用程序使用 Arrays.toString() 打印结果。 算法 步骤 1: 从右到左遍历链表,因为我们需要找到下一个更大的元素。 步骤 2: 为了有效地确定每个节点的下一个更大元素,保持栈单调递减。 步骤 3: 只要栈不为空且栈顶元素小于或等于当前正在使用的节点,就从栈中弹出元素。 步骤 4: 如果栈不为空,则栈顶元素是当前节点的下一个更大元素。 步骤 5: 将当前节点压入栈中,以便稍后进行比较。 步骤 6: 维护一个数组以存储后续的较大元素。 步骤 7: 最后,打印最终结果。 实施输出 The next greater element in the Linked List is [7, 4, 7, 0, 0] 复杂度分析 上述代码的时间复杂度为 O(N²),其中“N”代表数组中的元素数量,空间复杂度为 O(1)。 方法:使用栈和链表在单链表中,一个Java程序为每个节点找到下一个更大的元素。为了从右到左处理元素,它首先反转链表。对于每个节点,使用单调递减栈有效地找到下一个更大的元素,确保 O(n) 的时间复杂度。如果找到更大的元素,则将其添加到结果列表中;如果未找到,则分配 0。为了将结果列表恢复到其原始顺序,然后将其反转。使用 push 方法将新节点添加到列表中,并通过 printList 显示输出。整体策略利用栈和链表反转来优化下一个更大元素的搜索。 算法 步骤 1: 反转链表,以便从右到左处理元素。 步骤 2: 初始化一个栈来按递减顺序存储值。 步骤 3: 反向遍历链表。 步骤 3.1: 如果栈为空,则将 0 存储在结果列表中。 步骤 3.2: 如果不为空,则弹出小于或等于显示值的所有元素。 步骤 3.3: 如果栈不为空,则下一个更大的元素位于栈顶;否则,存储 0。 步骤 4: 将该值压入栈中。 步骤 5: 反转结果列表以恢复原始顺序。 实施输出 The next greater element in the Linked List is 7 4 7 0 0 复杂度分析 上述代码的时间复杂度为 O(N²),其中“N”代表数组中的元素数量,空间复杂度为 O(1)。 下一个主题Java 中的计数排序 |
在竞争性编程中,使用高效可靠的库确实对生产力和性能产生了巨大的影响。在本教程中,我们将重点介绍 Collection Framework 中最重要的容器。Java 标准库包含以下数据结构:1. ArrayList ArrayList 是……的一部分
阅读 24 分钟
什么是 ArrayList? 在 Java 中,ArrayList 是一个可调整大小的数组实现。ArrayList 会动态扩展,确保总有空间添加更多元素。Object 类的数组充当 ArrayList 的基础数据结构。在 Java 中,有三个构造函数用于...
阅读 4 分钟
在 Java 中,String 是最重要的主题。有很多与 String 相关概念,但字符串池概念是其中之一。Java 中的字符串池概念有点棘手。因此,在本节中,我们将讨论...
阅读 4 分钟
Java vs Kotlin Java 和 Kotlin 都是面向对象编程语言。但两者用于不同目的。Kotlin 用于开发 Android 应用程序,而 Java 主要用于开发企业应用程序。在本节中,我们讨论了 Java 和 Kotlin 之间的区别。Java Java 是...
5 分钟阅读
树的边界遍历是一种特殊的二叉树遍历技术,其中节点以特定顺序访问,以覆盖树的外部边界。在此遍历中,我们的目标是访问位于树外围的节点,包括左...
阅读 15 分钟
斑马谜题是一个复杂的谜题,需要大量的努力和脑力活动来解决。有时也被称为爱因斯坦谜题或爱因斯坦的谜语,因为它是由著名的德国物理学家阿尔伯特·爱因斯坦发明的。该谜题被广泛用于...
阅读 30 分钟
创建 Java 身体质量指数 (BMI) 计算器需要实施多种使用不同公式计算 BMI 的方法。身体质量指数 (BMI) 是一种工具,用于根据身高和体重确定个人的身体脂肪。修改后的 BMI 公式,...
阅读 4 分钟
Java 不支持类之间的多重继承,以避免钻石问题,该问题在多个父类提供具有相同签名的时会引起歧义。然而,随着 Java 8 中默认方法的引入,通过接口支持多重继承。虽然这增加了灵活性,但冲突...
阅读 6 分钟
Java 中的堆实现 Java 中的堆是一种特殊的数据结构,其中根节点或父节点与左子节点和右子节点进行比较并按顺序排列。假设 x 是一个根节点,y 是一个子节点...
21 分钟阅读
顺序搜索,也称为线性搜索,是一种简单的搜索算法,用于在列表或数组中查找特定的目标元素。搜索过程涉及逐个检查列表中的每个元素,直到找到所需的元素或直到...
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India