Java Program to Count Pairs in Linked List Whose Sum is Equal To X2025 年 5 月 6 日 | 阅读 3 分钟 编写一个程序,计算单向链表中节点值相加等于给定整数 X 的节点对的数量。链表中的每个节点都包含一个整数值。任务是识别所有值之和等于 X 的唯一节点对,并返回这些对的数量。 示例输入: 链表: 1 -> 2 -> 3 -> 4 -> 5, X = 6 输出 2 解释: 节点对为 (1, 5) 和 (2, 4)。 输入: 链表: -1 -> -2 -> 3 -> 1 -> 5, X = 4 输出 1 解释: 唯一的节点对为 (-1, 5)。 关键概念
文件名: PairSumInLinkedList.java 输出
解释该程序使用通过 HashSet 实现的哈希表来存储遍历链表时的节点值。对于每个节点,它计算补数(即 X - 节点的值)并检查哈希表中是否存在该补数。如果存在,则增加对的数量。检查后,将当前节点的值添加到哈希表中,以便在将来的对检查中使用。这种方法确保每个节点只处理一次,从而实现 O(n) 的时间复杂度。空间复杂度为 O(n),因为在最坏的情况下,哈希表可能存储所有节点值。 复杂度分析时间复杂度
空间复杂度
结论该程序通过利用哈希表来跟踪已访问节点及其补数,高效地计算链表中和等于指定目标值的节点对的数量。这种方法确保了 O(n) 的时间复杂度,使其成为大型数据集的最优选择。 它还强调了将链表遍历与辅助数据结构相结合以有效解决问题的强大功能。通过保持设计中的清晰性和模块化,该程序可以轻松扩展以处理变体,例如返回节点对本身或支持其他列表类型,从而确保通用性和实际适用性。 下一主题Java 应用 |
在 Java 中,Vigesimal 是一种基数为 20 的数制。与十二进制数一样,我们可以使用预定义或用户定义的方法来查找二进制、八进制、十进制和十六进制数的等效 Vigesimal 数,或者查找等效的其他进制数的...
阅读 3 分钟
在本节中,我们将学习什么是不可达数,并创建 Java 程序来检查给定数字是否是不可达数。不可达数程序经常在 Java 编码面试和学术界中出现。不可达数 一个数 N 被称为...
阅读 3 分钟
当今的应用需要出色的并发管理以及可扩展性和快速响应能力。根据当今应用程序的要求,响应式编程已成为一种处理异步数据流的解决方案。这种方法允许应用程序与实时事件一起工作……
阅读 6 分钟
在 Java 中,boolean 关键字是一种原始数据类型。它用于存储仅有的两个可能值,true 或 false。它指定 1 位信息,其“大小”无法精确定义。boolean 关键字与变量和方法一起使用。其默认值...
阅读1分钟
ORM 代表对象关系映射。它是一种位于 Web 应用程序和数据库之间的中间件应用程序或工具。它在 API 中封装了存储驱动程序的特定实现细节。什么是 ORM?ORM 是一种将 Java 对象和关系之间的数据转换的技术...
阅读 3 分钟
java.nio.DoubleBuffer 具有 reset() 方法。通过使用 DoubleBuffer 类,可以将缓冲区的当前位置重置为先前标记的位置。使用此方法时,标记的值不会被修改或删除。语法:buff.reset();返回值:返回具有其位置的 DoubleBuffer buff...
阅读 3 分钟
在 Java 中,Singleton 类是一种控制对象创建的类。这意味着单例类允许我们在同一时间创建一个类的单个对象。它通常用于控制对资源(如数据库连接或套接字)的访问。它……
阅读 3 分钟
给定一个字符串 inStr。我们的任务是查找并打印所有可以从字符串 inStr 生成的回文。请注意,字符串 inStr 的所有字符都必须用于生成回文。如果回文...
阅读9分钟
栈是一种遵循 LIFO(后进先出)原则的顺序数据结构,也就是说,最后添加的元素是第一个被提取的元素。方法:将每个字符逐个插入字符栈数据类型。弹出每个字符……
阅读 3 分钟
java.nio.charset.CharsetEncoder 包包含标准方法 encode(CharBuffer input)。CharsetEncoder 负责将输入字符缓冲区中的剩余字符转换为全新分配的字节缓冲区。整个编码过程仅由 encode() 方法实现。如果操作当前...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India