MayChallenge (40) | Tìm Thẩm Phán Thị Trấn

Trong một thị trấn, có  N người được đặt tên từ1 đến N.  Có một tin đồn là trong thị trấn có một thẩm phán bí mật.
Nếu tồn tại một thẩm phán bí mật thì:
  1. Thẩm phán không tin tưởng ai cả.
  2. Mọi người (trừ thẩm phán) tin tưởng thẩm phán.
  3. Chỉ có duy nhất 1 người thỏa mãn cả 2 điều kiện trên.
Cho bạn thông tin dữ liệu trust, một mảng gồm các cặp trust[i] = [a, b] được hiểu là người a tin tưởng người tên làb.
Nếu tìm thấy thẩm phán thị trấn, trả về tên họ.  Ngược lại, trả về -1.
Ví 1:
Input: N = 2, trust = [[1,2]]
Output: 2
Ví dụ 2 2:
Input: N = 3, trust = [[1,3],[2,3]]
Output: 3
Ví dụ 3:
Input: N = 3, trust = [[1,3],[2,3],[3,1]]
Output: -1
Ví dụ 4:
Input: N = 3, trust = [[1,2],[2,3]]
Output: -1
Ví dụ 5:
Input: N = 4, trust = [[1,3],[1,4],[2,3],[2,4],[4,3]]
Output: 3

Lưu ý:
  1. 1 <= N <= 1000
  2. trust.length <= 10000
  3. trust[i] are all different
  4. trust[i][0] != trust[i][1]
  5. 1 <= trust[i][0], trust[i][1] <= N
Khi một người đã tin tưởng 1 người khác thì chắc chắn không phải là thẩm phán thị trấn. Và một thẩm phán thị trấn phải được sự tin tưởng của tất cả mọi người trừ chính ông. Để cho đơn giản, mình đặt một mảng count[] thể hiện sự tin tưởng của người thứ i  đang ở mức bao nhiêu. Kết quả của bài toán là một người nào đó có sự tin tưởng = N - 1.
Có lẽ sau challenge này mình sẽ tìm một trang nào khác có challenge hay hơn, chứ cứ đều đều như thế này thì chán nhỉ. Cảm ơn bạn !

Nhận xét

Bài đăng phổ biến từ blog này

Hiểu về Norm Regularization

Faceswap & state-of-the-art (SOTA)