Menu
CoddyTech

The Celebrity Problem

A una festa ci sono n persone, numerate da 0 a n-1. Ti viene fornita una matrice n × n in cui matrix[i][j] è 1 se la persona i conosce la persona j e 0 in caso contrario. La conoscenza è a senso unico: i può conoscere j mentre j non conosce i.

Una celebrità è una persona che tutti gli altri conoscono e che non conosce nessuno. Restituisci il numero della celebrità, oppure -1 se non c'è alcuna celebrità.

Funzione

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
chi conosce chi: la riga i, la colonna j è 1 se la persona i conosce la persona j
Restituisceinteger
il numero della celebrità, oppure -1 se non ce n'è nessuna

Vincoli

  • 2 ≤ n ≤ 150, dove n è il numero di righe e di colonne
  • matrix[i][j] è 0 oppure 1
  • matrix[i][i] = 0 per ogni persona

Esempi

Input
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
Output
1
Spiegazione
La riga 1 contiene solo zeri, quindi la persona 1 non conosce nessuno. La colonna 1 contiene un 1 nelle righe 0 e 2, quindi entrambe le altre persone conoscono la persona 1. La persona 1 è la celebrità.
challenge icon

Per approfondire

Supponi che ogni ricerca sia una domanda da fare. Qual è il numero minimo di domande necessarie nel caso peggiore e puoi scendere sotto 3(n-1)?

Ripristina il codice
def findCelebrity(matrix):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

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

Output atteso

1