Menu
CoddyTech

The Celebrity Problem

Hay n personas en una fiesta, numeradas del 0 al n-1. Recibes una matriz n × n donde matrix[i][j] es 1 si la persona i conoce a la persona j y 0 si no. Conocerse es unidireccional: i puede conocer a j mientras que j no conoce a i.

Una celebridad es una persona a quien conocen todas las demás y que no conoce a nadie. Devuelve el número de la celebridad o -1 si no hay ninguna.

Función

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
quién conoce a quién: la fila i, la columna j es 1 si la persona i conoce a la persona j
Devuelveinteger
el número de la celebridad, o -1 si no hay ninguna

Restricciones

  • 2 ≤ n ≤ 150, donde n es el número de filas y de columnas
  • matrix[i][j] es 0 o 1
  • matrix[i][i] = 0 para cada persona

Ejemplos

Entrada
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
Salida
1
Explicación
La fila 1 contiene solo ceros, así que la persona 1 no conoce a nadie. La columna 1 tiene un 1 en las filas 0 y 2, así que las otras dos personas conocen a la persona 1. La persona 1 es la celebridad.
challenge icon

Para ir más allá

Supón que cada búsqueda es una pregunta que debes hacer. ¿Cuál es el menor número de preguntas que necesitas en el peor de los casos, y puedes bajar de 3(n-1)?

Restablecer código
def findCelebrity(matrix):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

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

Salida Esperada

1