Maximum Good People Based on Statements - Problem

There are two types of persons:

  • The good person: The person who always tells the truth.
  • The bad person: The person who might tell the truth and might lie.

You are given a 0-indexed 2D integer array statements of size n x n that represents the statements made by n people about each other. More specifically, statements[i][j] could be one of the following:

  • 0 which represents a statement made by person i that person j is a bad person.
  • 1 which represents a statement made by person i that person j is a good person.
  • 2 represents that no statement is made by person i about person j.

Additionally, no person ever makes a statement about themselves. Formally, we have that statements[i][i] = 2 for all 0 <= i < n.

Return the maximum number of people who can be good based on the statements made by the n people.

Input & Output

Example 1 — Basic Consistency Check
$ Input: statements = [[2,1,2],[1,2,2],[2,2,2]]
Output: 2
💡 Note: Person 0 says person 1 is good, person 1 says person 0 is good. If both are good, their statements are consistent (good people tell truth). Maximum good people = 2.
Example 2 — Contradictory Statements
$ Input: statements = [[2,0],[0,2]]
Output: 1
💡 Note: Person 0 says person 1 is bad, person 1 says person 0 is bad. They can't both be good (would contradict each other). Maximum good people = 1.
Example 3 — Single Person
$ Input: statements = [[2]]
Output: 1
💡 Note: Only one person exists, no statements about others. That person can be good. Maximum good people = 1.

Constraints

  • n == statements.length == statements[i].length
  • 2 ≤ n ≤ 15
  • statements[i][j] is either 0, 1, or 2
  • statements[i][i] == 2

Visualization

Tap to expand
Maximum Good People: Find Largest Consistent Truth-Teller GroupInput: Statements Matrix212122222P0 says P1 is good (1)P1 says P0 is good (1)Test: Can P0 and P1 both be good?P0GoodP1Goodsays good ✓says good ✓Consistent!Both statementsmatch realityMaximum Good People = 2
Understanding the Visualization
1
Input Matrix
2D array where statements[i][j] represents person i's claim about person j
2
Try Combinations
Test different subsets of people as 'good' (truth-tellers)
3
Validate Consistency
Check if good people's statements match the assumed reality
Key Takeaway
🎯 Key Insight: Good people always tell the truth, so we find the largest group where everyone's statements are consistent with reality
Asked in
Google 15 Meta 12 Amazon 8
18.5K Views
Medium Frequency
~25 min Avg. Time
485 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen