Menu
CoddyTech

The Celebrity Problem

Auf einer Party sind n Personen, nummeriert von 0 bis n-1. Du erhältst eine n × n-Matrix, in der matrix[i][j] 1 ist, wenn Person i Person j kennt, und 0, wenn nicht. Das Kennen ist einseitig: i kann j kennen, während j i nicht kennt.

Eine berühmte Person ist jemand, den alle anderen kennen und der niemanden kennt. Gib die Nummer dieser Person zurück oder -1, wenn es keine berühmte Person gibt.

Funktion

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
Wer wen kennt: Zeile i, Spalte j ist 1, wenn Person i Person j kennt.
Gibt zurückinteger
die Nummer des Prominenten oder -1, falls es keinen gibt

Einschränkungen

  • 2 ≤ n ≤ 150, wobei n die Anzahl der Zeilen und Spalten ist
  • matrix[i][j] ist 0 oder 1
  • matrix[i][i] = 0 für jede Person

Beispiele

Eingabe
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
Ausgabe
1
Erklärung
Zeile 1 besteht nur aus Nullen, also kennt Person 1 niemanden. In Spalte 1 steht in den Zeilen 0 und 2 jeweils eine 1, also kennen beide anderen Personen Person 1. Person 1 ist der Promi.
challenge icon

Weiterführende Frage

Angenommen, jeder Suchvorgang ist eine Frage, die du stellen musst. Wie wenige Fragen brauchst du im schlimmsten Fall, und kannst du unter 3(n-1) kommen?

Code zurücksetzen
def findCelebrity(matrix):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

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

Erwartete Ausgabe

1