Python中的名人问题2025年1月5日 | 阅读6分钟 在这个问题中,我们在一个派对上。派对上有 N 个人。派对上可能有一个名人;因此,所有人都认识他或她。然而,派对上认识他的人却不认识任何人。我们只能问一个问题,例如“x 认识 y 吗?”。我们必须找到需要多少个问题才能确定名人是否存在于派对上,如果存在,那么名人是谁。 输入是一个描述派对上的人的列表。我们还将有一个预定义的函数来判断 x 是否认识 y。 让我们看一些例子来理解这个问题。 示例 输入 people = [[0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 0, 0], [0, 0, 1, 0] ] 输出 2 解释: ID 为 2 的人谁都不认识,但所有人都认识他。 输入 people = [ [0, 0, 1, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 1, 0] ] 输出: 没有名人 方法 - 1我们将使用邻接表来解决此问题。 我们收到的是一个方阵形式的输入。设 I 为行,J 为列。该矩阵描述了人们如何认识彼此。特定行和列的所有单元格均为 0,除了代表连接的单元格。因此,如果矩阵的第 i 行和第 j 列的值为 1,则表示第 i 个人认识第 j 个人。 因此,我们可以说这个矩阵代表一个有向图,其中矩阵是图的邻接矩阵。要解决此问题,我们首先需要将矩阵转换为邻接表。这将使逻辑易于理解。如果一个人的邻接表为空,则表示这个人不认识派对上的任何人。此外,我们还需要检查派对上的所有人都认识这个人。如果这两个条件都满足,那么这个人就是名人。我们需要返回名人的索引。 我们将按照以下步骤解决问题:
下面是此方法的实现。 代码 输出 The celebrity at the party is: 2 时间复杂度:我们使用了嵌套循环来遍历邻接表。因此,时间复杂度是非线性的。由于 N 是邻接表的长度,最终时间复杂度将为 O(N ^ 2)。 辅助空间:我们使用了一个列表来存储邻接表,这将占用线性内存空间。因此,问题的空间复杂度为 O(N)。 方法 - 2在此方法中,我们将使用图的入度和出度概念来解决此问题。 使用入度和出度的逻辑在于,这两个计数告诉我们节点连接到的节点以及有多少其他节点。因此,我们可以使用入度来找出有多少节点指向当前节点。 此信息或计数将告诉我们有多少人认识当前这个人。出度计数告诉我们当前节点指向了多少节点。此计数将使用当前人认识的人数。 根据我们问题,我们需要找到一个入度为 n - 1 的节点,这表示派对上的 n - 1 个人(不包括这个人自己)认识当前这个人。此外,这个人应该有 0 个出度,这表示这个人不认识派对上的任何人。让我们看看问题的算法。 以下是上述方法在 Python 中的实现。 代码 输出 The celebrity at the party is: 2 |
? 简介 time 模块可用于确定 Python 脚本需要多长时间才能执行。首先在脚本开头导入它。使用 time 在所需测量代码块之前记录开始时间。time(),并记录结束时间...
阅读 6 分钟
Facebook 抓取是指从社交网络平台自动收集数据。个人和组织经常使用现成的网络抓取工具或创建自己的抓取器来完成此任务。数据收集后,会对其进行清理和整理成...
阅读 19 分钟
机器学习原理知识是支撑机器学习算法开发的数学和统计基础,这些算法使机器能够从数据中学习。它涉及对模型如何从有限的数据集中进行泛化以在新情况或未见过的情况下做出预测或决策的理解。核心概念包括...
阅读 3 分钟
?简介 Python 是当今世界上最多才多艺的编程语言之一。它有许多用于不同目的的文件扩展名。其中,.pyc、.pyd 和 .pyo 尤其值得注意。这些文件扩展名包括 .py、.pyc、.pyo 和 .txt,每种...
阅读 6 分钟
给定一棵具有不同节点(没有两个节点具有相同的数据值)的二叉树。问题是打印从根到节点 x 的路径。如果节点 x 不存在,则打印“无路径”。示例:输入:...
阅读 4 分钟
简介 Matplotlib 是 Python 中最受欢迎的绘图库之一,广泛用于创建静态、动画和交互式可视化。在其众多图表类型中,四矢图是可视化向量场的强大工具。本指南将深入探讨...
阅读 3 分钟
? 引言 无服务器注册改变了利用开发场景,AWS Lambda 在这场范式转变中成为先驱。在 AWS Lambda 环境中,Lambda 层提供了一种强大的解决方案,可以高效地管理条件并优化代码重用。AWS Lambda 层简介 AWS...
11 分钟阅读
简介:在本教程中,我们将学习 Python 字符串中的 `removeprefix()` 方法。`removeprefix()` 函数删除前缀并返回剩余的字符串。如果未找到默认字符串,则返回原始字符串。它是在 Python 3.9.0 版中引入的。语法:语法是……
阅读 2 分钟
OPTICS 是一种基于密度的聚类技术,可以提取不同密度和形状的簇。在大型、高维数据集中查找具有不同密度的簇是它的一个用途。OPTICS 的主要目标是找到数据集中密度连接的点,以便...
5 分钟阅读
当我们谈论脚本语言时,我们指的是用于特定目的的特殊类型的计算机语言。可以把它们想象成专为特定任务设计的工具,就像用特定的扳手修理漏水的水龙头,而不是用一个通用工具箱。其中一些脚本语言...
阅读25分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India