Menu
CoddyTech

The Celebrity Problem

派对上有 n 个人,编号从 0 到 n-1。你会得到一个 n × n 矩阵,其中,如果 i 认识 j,则 matrix[i][j] 为 1;如果不认识,则为 0。认识是单向的:i 可以认识 j,而 j 不认识 i。

名人是指每个其他人都认识,但自己不认识任何人的人。返回名人的编号;如果没有名人,则返回 -1。

函数

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
谁认识谁:第 i 行、第 j 列为 1,表示人物 i 认识人物 j
返回值integer
名人的号码,如果没有则为 -1

约束条件

  • 2 ≤ n ≤ 150,其中 n 是行数和列数
  • matrix[i][j] 是 0 或 1
  • matrix[i][i] = 0 对每个人

示例

输入
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
输出
1
解释
第 1 行全是 0,所以 person 1 谁也不认识。第 1 列在第 0 行和第 2 行的值都是 1,所以另外两个人都认识 person 1。person 1 就是名人。
challenge icon

进阶

假设每次查找都是一个你必须提出的问题。在最坏情况下,你最少需要提出多少个问题?能否少于 3(n-1)?

重置代码
def findCelebrity(matrix):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]

预期输出

1