Menu
CoddyTech

The Celebrity Problem

На вечеринке присутствуют n человек, пронумерованных от 0 до n-1. Вам дана матрица размером n × n, где matrix[i][j] равно 1, если человек i знает человека j, и 0 в противном случае. Знакомство одностороннее: i может знать j, даже если j не знает i.

Знаменитость — это человек, которого знают все остальные и который никого не знает. Верните номер знаменитости или -1, если знаменитости нет.

Функция

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
кто кого знает: строка i, столбец j равен 1, если человек i знает человека j
Возвращаетinteger
номер знаменитости или -1, если такой нет

Ограничения

  • 2 ≤ n ≤ 150, где n — количество строк и столбцов
  • matrix[i][j] равно 0 или 1
  • matrix[i][i] = 0 для каждого человека

Примеры

Ввод
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
Вывод
1
Пояснение
В строке 1 стоят одни нули, значит, человек 1 никого не знает. В столбце 1 единицы стоят в строках 0 и 2, значит, оба других человека знают человека 1. Человек 1 — знаменитость.
challenge icon

Дополнительный вопрос

Предположим, каждый поиск — это вопрос, который нужно задать. Как мало вопросов вам понадобится в худшем случае и можно ли добиться результата меньше 3(n-1)?

Сбросить код
def findCelebrity(matrix):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

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

Ожидаемый вывод

1