Menu
CoddyTech

The Celebrity Problem

Na przyjęciu jest n osób ponumerowanych od 0 do n-1. Otrzymujesz macierz n × n, w której matrix[i][j] ma wartość 1, jeśli osoba i zna osobę j, a 0, jeśli jej nie zna. Znajomość jest jednostronna: i może znać j, podczas gdy j nie zna i.

Gwiazda to osoba, którą zna każda inna osoba i która nie zna nikogo. Zwróć numer gwiazdy lub -1, jeśli nie ma gwiazdy.

Funkcja

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
kto kogo zna: wiersz i, kolumna j ma wartość 1, jeśli osoba i zna osobę j
Zwracainteger
numer celebryty lub -1, jeśli go nie ma

Ograniczenia

  • 2 ≤ n ≤ 150, gdzie n oznacza liczbę wierszy i kolumn
  • matrix[i][j] ma wartość 0 lub 1
  • matrix[i][i] = 0 dla każdej osoby

Przykłady

Wejście
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
Wyjście
1
Wyjaśnienie
Wiersz 1 zawiera same zera, więc osoba 1 nikogo nie zna. W kolumnie 1 wiersze 0 i 2 zawierają 1, więc obie pozostałe osoby znają osobę 1. Osoba 1 jest celebrytą.
challenge icon

Pytanie dodatkowe

Załóżmy, że każde wyszukiwanie to pytanie, które musisz zadać. Jak najmniej pytań potrzebujesz w najgorszym przypadku i czy możesz zejść poniżej 3(n-1)?

Zresetuj kod
def findCelebrity(matrix):
    # Napisz tutaj kod

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

1