名人问题2025 年 1 月 5 日 | 阅读 9 分钟 在本教程中,我们将学习名人问题。我们将使用各种方法来解决这个问题。这是一个重要的编程问题,可能会在技术面试中出现。本教程将帮助您学会高效地解决它。让我们来理解问题陈述。 派对上有 N 个人,只有一个人被所有人认识,但这个人不认识任何人。我们需要找出 A 是否认识 B,换句话说,我们需要用尽可能少的问题来识别这个“陌生人”或“名人”。 这个问题由一组数字或字符表示,象征着派对上的人。我们有一个名为 HaveAcquaintance(A, B) 的函数,当给定两个人 A 和 B 时,它会告诉我们 A 是否认识 B(返回 true)或者不认识(返回 false)。 示例 1 输入 矩阵 = [[0, 0, 1, 0, 1], [0, 0, 1, 0, 0], [0, 1, 0, 1, 1], [0, 0, 1, 0, 0], [0, 1, 1, 0, 0]] 输出: id = 3 解释: 在这种情况下,ID 为 3 的人不知道任何人,而每个人都认识他。 示例 2 输入 矩阵 = [[0, 0, 1, 0, 1], [0, 0, 1, 0, 0], [0, 1, 0, 1, 1], [0, 0, 1, 0, 1], [0, 1, 1, 0, 0]] 输出: 没有名人 解释: 在这种情况下,没有名人。 基本方法和利用邻接表的方法我们有一个 NxN 的方阵 M[][] 来表示派对上的人之间的关系。在此矩阵中,如果 M[i][j] 设置为 1,则表示第 i 个人认识第 j 个人。我们将此视为一个有向图并构建一个邻接表。然后,我们检查是否有人拥有空的邻接表,这表明他们不认识派对上的任何人。如果是这种情况,我们验证是否派对上的所有其他人都认识那个人。如果他们认识,我们将该人视为名人并返回其索引 i。如果不是,我们将继续寻找名人。 要解决此问题,请按照以下步骤操作
让我们理解以下示例 - 示例 - 输出 2 解释 - 在上面的代码中,我们遵循了以下步骤 -
名人问题:利用图进行识别请按照以下步骤解决此问题
让我们来理解以下代码—— 示例 - 输出 The celebrity is person with ID 2 解释 - 让我们理解上面的代码
使用递归我们可以使用递归来解决这个问题。如果知道了 N-1 个人的潜在名人,就有可能从它找到 N 的解决方案。潜在名人是通过以下规则移除 n-1 个人后仍然存在的人。
以下是实现递归的步骤 -
让我们理解下面的代码片段。 示例 - 输出 Celebrity ID: 2 结论在此代码中,我们通过检查某人是否不认识任何人但被所有人认识来找到派对上的名人。我们使用两个数组 indegree 和 outdegree 来跟踪谁认识谁以及被谁认识。通过比较这些值,我们识别出名人。如果存在这样一个人,则返回其 ID。如果不存在,则得出结论,派对上没有名人。此代码可以有效地解决名人问题,这是技术面试轮中常见的面试问题。 |
在这个问题中,我们给定一个二叉树。我们必须找到这个给定二叉树的一个子树,该子树也满足被归类为二叉搜索树的要求。最后,我们必须返回该二叉搜索树的大小...
阅读 4 分钟
要绘制分类图,请使用 Seaborn 的 catplot() 函数。此函数提供了对各种轴级函数的访问,这些函数使用几种可用的可视化表示之一来显示数值数据与一个或多个类别变量之间的关系。type 参数选择...
5 分钟阅读
简介 散列是计算机科学和密码学中的一个重要概念。它指的是获取输入数据(也称为消息)并应用数学函数或算法。此过程会生成一个固定大小的字符序列,通常是十六进制数或字符串...
阅读9分钟
Python 文档字符串指的是 Python 文档字符串,它基本上是字符串文字。它们提供了一种将文档与 Python 函数、模块、类和方法结合起来的合适方式。文档字符串可能会随程序一起执行,但它不会被忽略...
阅读 4 分钟
使用 numpy.arctan2() 函数计算 arr1/arr2 的逐元素反正切,该函数会正确选择象限。选择象限可确保原点发出的射线与通过点 (1, 0) 和 (x2, x1) 的射线之间的有符号角度(以弧度为单位)为...
阅读 2 分钟
在现代技术和工作流程的背景下,自动化是效率的基石,它能够无缝执行重复性任务。Python 凭借其通用性和易用性,成为自动化日常流程的强大工具。自动化 Python 脚本以实现每日运行...
阅读 4 分钟
?将数据附加到文件是许多编程任务中的常见操作。Python 提供了多种将数据附加到文件的方法,每种方法都有其优点和用例。在本文中,我们将探讨在 Python 中将数据附加到文件的各种方法,...
阅读 3 分钟
Python 是一种高级、解释型、通用编程语言。它由 Guido van Rossum 创建,并于 1991 年首次发布。Python 强调可读性、简洁性和易用性,这有助于它在开发者中广泛流行。Python 的主要特点包括:可读性:Python 的语法是...
18 分钟阅读
? Python 是一种高级、解释型且灵活的编程语言,以其对代码清晰度的重视而闻名。它有助于面向对象的编程概念,如封装、继承和多态性。Python 的简洁性和易于分析的语法使其对初学者和经验丰富的程序员都很受欢迎。它提供了广泛的...
阅读 4 分钟
对于任何基于 Python 的应用程序,编码测试都是创建良好应用程序的必要过程。尽管如此,测试调用外部系统的代码通常很困难(例如数据库、API 或硬件)。幸运的是,Python 标准库提供了...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India