Menu
CoddyTech

The Celebrity Problem

Có n người tại một bữa tiệc, được đánh số từ 0 đến n-1. Bạn nhận được một ma trận n × n, trong đó matrix[i][j] là 1 nếu người i biết người j và là 0 nếu không. Việc quen biết chỉ có một chiều: i có thể biết j trong khi j không biết i.

Người nổi tiếng là người được tất cả những người khác biết đến và không biết ai. Trả về số của người nổi tiếng, hoặc -1 nếu không có người nổi tiếng.

Hàm

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
ai biết ai: hàng i, cột j là 1 nếu người i biết người j
Trả vềinteger
số của người nổi tiếng, hoặc -1 nếu không có

Ràng buộc

  • 2 ≤ n ≤ 150, trong đó n là số hàng và số cột
  • matrix[i][j] là 0 hoặc 1
  • matrix[i][i] = 0 cho mỗi người

Ví dụ

Đầu vào
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
Đầu ra
1
Giải thích
Hàng 1 toàn số 0, nên người số 1 không quen ai. Cột 1 có số 1 ở hàng 0 và hàng 2, nên cả hai người còn lại đều quen người số 1. Người số 1 là người nổi tiếng.
challenge icon

Câu hỏi mở rộng

Giả sử mỗi lần tra cứu là một câu hỏi bạn cần đặt ra. Trong trường hợp xấu nhất, bạn cần ít nhất bao nhiêu câu hỏi, và liệu bạn có thể giảm xuống dưới 3(n-1) không?

Đặt lại code
def findCelebrity(matrix):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

1