The Celebrity Problem in Java2025年5月5日 | 阅读 4 分钟 名人问题是一个经典的谜题,在计算机科学领域,尤其是在算法问题解决方面,经常会遇到。这个问题可以概括如下。 想象一个有 N 个人的派对。“名人”是指每个人都认识,但自己不认识任何其他人的人。目标是确定是否有任何参与者是名人。 解决这个问题的关键条件
问题陈述给定一个 N x N 的 矩阵 M 任务是以高效的方式识别名人(如果存在)。 示例让我们考虑以下 4 个人的矩阵 M ![]() 在这里,3 号是名人,因为 让我们通过不同的方法来解决这个问题。 蛮力法一种简单的方法是检查每个人。对于每个人 这种方法需要 O(N²) 的时间,因为对于每个人,您都需要检查他们与其他所有人的关系。 优化方法:基于堆栈的解决方案一种更有效的方法可以使用堆栈将问题的时间复杂度降低到 O(N)。 步骤 1: 将所有人推入堆栈。 步骤 2: 连续弹出两个人,例如 A 和 B 步骤 3: 所有比较完成后,只剩一个人。这是潜在的名人。 步骤 4: 验证此人是否满足名人条件 让我们在 Java 程序中实现上述方法。 文件名:CelebrityProblem.java 输出 Celebrity found at index: 3 解释该程序使用基于堆栈的方法来识别名人。首先,所有人都被推入一个 堆栈。然后通过比较两个人来缩减堆栈:如果 A 认识 B,则 A 不是名人,因此将 B 推回堆栈;否则,B 不是名人,将 A 推回。这个过程一直持续到只剩一个候选人。 然后通过检查每个人是否认识他们以及他们是否不认识其他人来验证候选人。如果候选人满足这些条件,则他们是名人;否则,不存在名人。此解决方案的时间复杂度为 O(N),可以有效地解决任何数量的与会者的问题。 复杂度分析时间复杂度:O(N) 堆栈缩减涉及 N-1 次比较。验证步骤需要检查 2N 个条件(N 个入站关系,N 个出站关系)。 空间复杂度: O(N) 用于堆栈。 结论名人问题展示了高效的问题解决技术,突出了如何通过算法优化来改进暴力解法。Java 实现说明了在实际编码场景中如何处理此类问题。 下一个主题Java 中的霓虹数 |
Java JDBC 选择题 JDBC 是一个 API(应用程序编程接口),它帮助程序员编写 Java 程序来连接数据库、从数据库检索数据,并在 Java 程序中对数据执行各种操作。它...
阅读 10 分钟
如何在 Java 中打印 N 个闰年。在闰年问题解决中,基本论点是应该有 4 年的间隔,这本身是不正确的。日历中的任何年份,如果不符合其他标准...
阅读 3 分钟
JavaTuples 库引入了一种强大的机制,用于在 Java 编程中管理包含元组(有序元素集合)的结构化数据。在其组件中, Quartet 和 Quintet 类引人注目,分别设计用于处理包含四个和五个元素的元组。这些泛型类允许开发人员...
阅读 10 分钟
Java 是一种通用且广泛使用的编程语言,二十多年来一直是软件开发的重要组成部分。Java 以其平台独立性、安全特性和广泛的库而闻名,是每位有志于成为或已经是经验丰富的开发人员都应该了解的语言。在...
阅读 4 分钟
Java 8 引入了用于处理对象集合的功能。流只不过是对象序列,它支持可以通过管道连接以产生所需结果的各种方法。在进一步讨论此主题之前,建议...
阅读 8 分钟
一维 (1D) 数组是一种线性数据结构,它将相同数据类型的元素存储在连续的内存位置中。基本术语 数组元素:数组的项称为其元素,它们存储在数组中,并且可以通过...随机访问。
7 分钟阅读
要在 Java 中将所有特殊字符添加到字符串的末尾,必须遍历输入字符串,识别字母数字字符,然后重新排列它们,使特殊字符位于末尾。Java 的内置字符分类方法可用于……
5 分钟阅读
如何在 Java 中将 String 转换为 String 数组? 在 Java 中,String 是一个表示字符序列的对象。 为了使用 String,我们需要导入 java.lang 包中定义的 String 类。 String 数组是字符串的数组...
阅读 6 分钟
如何在不使用 reverse 函数的情况下在 Java 中反转字符串 有以下几种在 Java 中反转字符串的方法: 使用 for 循环 使用 While 循环 使用静态方法 使用 for 循环示例 在以下示例中,我们使用 for 循环来...
阅读 2 分钟
Java IntSummaryStatistics 类的 getCount() 函数用于确定此 IntSummaryStatistics 中的记录数。语法:public long getCount() 参数:此方法不接受任何参数。返回值:该函数返回此 IntSummaryStatistics 中的记录总数。示例...
阅读 2 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India