为您找到"
名人问题
"相关结果约100,000,000个
文章浏览阅读1.3w次,点赞13次,收藏16次。问题:在一个房间里有 N 个人,其中一个是名人,所谓名人就是大家都认识他,但是他不认识任何人。其它人可能认识房间里面另外的一部分人。你可以问任何人问题,但是问题只能是:你认识 X 吗,对方回答 Yes or No. 请问最少要问多少个问题才能把名人找 ...
今天来讨论经典的「名流问题」: 给你 n 个人的社交关系(你知道任意两个人之间是否认识),然后请你找出这些人中的「名人」。. 所谓「名人」有两个条件: 1、所有其他人都认识「名人」。 2、「名人」不认识任何其他人。
如果a认识b,则a不会是名人;如果a不认识b,则b不会是名人。因此每询问一次a是否认识b,都可以排除掉一个人,所以在O(n)时间内就可以排除掉n-1个人。 最后还要检查确认,是否其他人都认识这个人,以及这个人都不认识其他人。
名人问题是指在 n 个人中,一个"名人"被定义为"所有人都认识但他不认识任何人"的人。本网页介绍了不同的算法和解决方案,如暴力法,优雅法,双指针法,图形法等,并给出了时间复杂度和空间复杂度的分析。
现在,解决名人问题的解法时间复杂度为 O(N), 空间复杂度 为 O(1),已经是最优解法了。 查看更多优质算法文章 点击这里,手把手带你刷力扣,致力于把算法讲清楚!我的 算法教程 已经获得 90k star,欢迎点赞!
名人问题(Celebrity Problem)是一个经典的逻辑问题,常用于面试和算法测试。问题描述是这样的:在一个聚会中,有一群人,他们中的某些人知道其他人,但没有任何一个人认识所有其他人。
问题: 在一个房间里有 N 个人,其中一个是名人,所谓名人就是大家都认识他,但是他不认识任何人。其它人可能认识房间里面另外的一部分人。你可以问任何人问题,但是问题只能是:你认识 X 吗,对方回答 Yes or No. 请问最少要问多少个问题才能把名人找出来?
本文介绍了一道面试题,要求用O (n)时间复杂度找出一个有向图中的名人,即不认识任何人,而且所有人都认识他的人。文章给出了三种解决方法,分别是用数组、一头扫和两头扫,并给出了代码和算法优化。
问题描述:名人问题一个名人就是指这样一个人:所有其他人都认识他,并且他不认识任何其他人。现在有一个N个人的集合,以及他们之间的认识关系。求一个算法找出其中的名人(如果有的话)或者判断出没有名人(如果没有的话)。1.构造输入数据数组,名人所在的Index可控。
否则,如果 A 不认识 B,那么 B 就不可能是名人将 A 推入堆栈。 将堆栈中的剩余元素指定为名人。 从 0 到 n-1 循环,求知道名人的人数和名人认识的人数。如果知道名人的人数是 n-1 并且名人知道的人数是 0 则返回名人的 id 否则返回 -1。 实施: C++ 实现