Menu
CoddyTech

The Celebrity Problem

Ada n orang di sebuah pesta, bernomor dari 0 hingga n-1. Kamu mendapatkan matriks n × n, dengan matrix[i][j] bernilai 1 jika orang i mengenal orang j dan 0 jika tidak. Saling mengenal tidak harus timbal balik: i bisa mengenal j, sementara j tidak mengenal i.

Selebritas adalah orang yang dikenal oleh semua orang lain dan tidak mengenal siapa pun. Kembalikan nomor selebritas tersebut, atau -1 jika tidak ada selebritas.

Fungsi

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
siapa mengenal siapa: baris i, kolom j bernilai 1 jika orang i mengenal orang j
Mengembalikaninteger
nomor selebritas tersebut, atau -1 jika tidak ada

Batasan

  • 2 ≤ n ≤ 150, dengan n adalah jumlah baris dan kolom
  • matrix[i][j] bernilai 0 atau 1
  • matrix[i][i] = 0 untuk setiap orang

Contoh

Input
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
Output
1
Penjelasan
Baris 1 semuanya berisi nol, jadi orang 1 tidak mengenal siapa pun. Kolom 1 berisi angka 1 pada baris 0 dan 2, jadi kedua orang lainnya mengenal orang 1. Orang 1 adalah selebritas.
challenge icon

Pertanyaan lanjutan

Misalkan setiap pencarian adalah pertanyaan yang harus kamu ajukan. Berapa sedikit pertanyaan yang kamu perlukan dalam kasus terburuk, dan bisakah kamu mendapat kurang dari 3(n-1)?

Reset kode
def findCelebrity(matrix):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

1