Menu
CoddyTech

The Celebrity Problem

Il y a n personnes à une fête, numérotées de 0 à n-1. On vous donne une matrice n × n où matrix[i][j] vaut 1 si la personne i connaît la personne j et 0 sinon. La relation de connaissance est à sens unique : i peut connaître j sans que j connaisse i.

Une célébrité est une personne que toutes les autres personnes connaissent et qui ne connaît personne. Renvoyez le numéro de la célébrité, ou -1 s'il n'y a pas de célébrité.

Fonction

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
qui connaît qui : la ligne i, la colonne j vaut 1 si la personne i connaît la personne j
Renvoieinteger
le numéro de la célébrité, ou -1 s’il n’y en a aucune

Contraintes

  • 2 ≤ n ≤ 150, où n est le nombre de lignes et de colonnes
  • matrix[i][j] est 0 ou 1
  • matrix[i][i] = 0 pour chaque personne

Exemples

Entrée
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
Sortie
1
Explication
La ligne 1 ne contient que des zéros, donc la personne 1 ne connaît personne. La colonne 1 contient un 1 aux lignes 0 et 2, donc les deux autres personnes connaissent la personne 1. La personne 1 est la célébrité.
challenge icon

Pour aller plus loin

Supposons que chaque recherche soit une question que tu dois poser. Quel est le nombre minimal de questions dont tu as besoin dans le pire des cas, et peux-tu descendre en dessous de 3(n-1) ?

Réinitialiser le code
def findCelebrity(matrix):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

1