Menu
CoddyTech

The Celebrity Problem

Há n pessoas em uma festa, numeradas de 0 a n-1. Você recebe uma matriz n × n em que matrix[i][j] é 1 se a pessoa i conhece a pessoa j e 0 caso contrário. Conhecer alguém é uma via de mão única: i pode conhecer j sem que j conheça i.

Uma celebridade é uma pessoa que todas as outras pessoas conhecem e que não conhece ninguém. Retorne o número da celebridade ou -1 se não houver nenhuma celebridade.

Função

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
quem conhece quem: a linha i, coluna j é 1 se a pessoa i conhece a pessoa j
Retornainteger
o número da celebridade, ou -1 se não houver nenhuma

Restrições

  • 2 ≤ n ≤ 150, em que n é o número de linhas e de colunas
  • matrix[i][j] é 0 ou 1
  • matrix[i][i] = 0 para cada pessoa

Exemplos

Entrada
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
Saída
1
Explicação
A linha 1 contém apenas zeros, então a pessoa 1 não conhece ninguém. A coluna 1 contém um 1 nas linhas 0 e 2, então ambas as outras pessoas conhecem a pessoa 1. A pessoa 1 é a celebridade.
challenge icon

Para ir além

Suponha que cada busca seja uma pergunta que você precisa fazer. Qual é o menor número de perguntas de que você precisa no pior caso, e é possível ficar abaixo de 3(n-1)?

Redefinir código
def findCelebrity(matrix):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

1