Menu
CoddyTech

The Celebrity Problem

パーティーには、0からn-1まで番号が付けられたn人の人がいます。matrix[i][j]が、人物iが人物jを知っている場合は1、知らない場合は0となるn × n行列が与えられます。知り合いであることは一方通行の場合があります。つまり、iはjを知っていても、jはiを知らないことがあります。

セレブとは、他の全員から知られていて、誰のことも知らない人物です。セレブの番号を返し、セレブがいない場合は-1を返してください。

関数

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
誰が誰を知っているか:人物 i が人物 j を知っている場合、行 i、列 j の値は 1
戻り値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 はすべて 0 なので、person 1 は誰も知りません。列 1 には行 0 と 2 に 1 があるので、ほかの 2 人はどちらも person 1 を知っています。person 1 が有名人です。
challenge icon

発展問題

各検索が、あなたが尋ねなければならない質問だとしましょう。最悪の場合、質問はいくつ必要でしょうか。また、3(n-1)未満にできますか?

コードをリセット
def findCelebrity(matrix):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

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

期待される出力

1