mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-02 22:13:28 +08:00
update
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
"translatedContent": "<p>游戏中存在两种角色:</p>\n\n<ul>\n\t<li><strong>好人</strong>:该角色只说真话。</li>\n\t<li><strong>坏人</strong>:该角色可能说真话,也可能说假话。</li>\n</ul>\n\n<p>给你一个下标从 <strong>0</strong> 开始的二维整数数组 <code>statements</code> ,大小为 <code>n x n</code> ,表示 <code>n</code> 个玩家对彼此角色的陈述。具体来说,<code>statements[i][j]</code> 可以是下述值之一:</p>\n\n<ul>\n\t<li><code>0</code> 表示 <code>i</code> 的陈述认为 <code>j</code> 是 <strong>坏人</strong> 。</li>\n\t<li><code>1</code> 表示 <code>i</code> 的陈述认为 <code>j</code> 是 <strong>好人</strong> 。</li>\n\t<li><code>2</code> 表示 <code>i</code> 没有对 <code>j</code> 作出陈述。</li>\n</ul>\n\n<p>另外,玩家不会对自己进行陈述。形式上,对所有 <code>0 <= i < n</code> ,都有 <code>statements[i][i] = 2</code> 。</p>\n\n<p>根据这 <code>n</code> 个玩家的陈述,返回可以认为是 <strong>好人</strong> 的 <strong>最大</strong> 数目。</p>\n\n<p> </p>\n\n<p><strong>示例 1:</strong></p>\n<img alt=\"\" src=\"https://assets.leetcode.com/uploads/2022/01/15/logic1.jpg\" style=\"width: 600px; height: 262px;\">\n<pre><strong>输入:</strong>statements = [[2,1,2],[1,2,2],[2,0,2]]\n<strong>输出:</strong>2\n<strong>解释:</strong>每个人都做一条陈述。\n- 0 认为 1 是好人。\n- 1 认为 0 是好人。\n- 2 认为 1 是坏人。\n以 2 为突破点。\n- 假设 2 是一个好人:\n - 基于 2 的陈述,1 是坏人。\n - 那么可以确认 1 是坏人,2 是好人。\n - 基于 1 的陈述,由于 1 是坏人,那么他在陈述时可能:\n - 说真话。在这种情况下会出现矛盾,所以假设无效。\n - 说假话。在这种情况下,0 也是坏人并且在陈述时说假话。\n - <strong>在认为 2 是好人的情况下,这组玩家中只有一个好人。</strong>\n- 假设 2 是一个坏人:\n - 基于 2 的陈述,由于 2 是坏人,那么他在陈述时可能:\n - 说真话。在这种情况下,0 和 1 都是坏人。\n - <strong>在认为 2 是坏人但说真话的情况下,这组玩家中没有一个好人。</strong>\n - 说假话。在这种情况下,1 是好人。\n - 由于 1 是好人,0 也是好人。\n - <strong>在认为 2 是坏人且说假话的情况下,这组玩家中有两个好人。</strong>\n在最佳情况下,至多有两个好人,所以返回 2 。\n注意,能得到此结论的方法不止一种。\n</pre>\n\n<p><strong>示例 2:</strong></p>\n<img alt=\"\" src=\"https://assets.leetcode.com/uploads/2022/01/15/logic2.jpg\" style=\"width: 600px; height: 262px;\">\n<pre><strong>输入:</strong>statements = [[2,0],[0,2]]\n<strong>输出:</strong>1\n<strong>解释:</strong>每个人都做一条陈述。\n- 0 认为 1 是坏人。\n- 1 认为 0 是坏人。\n以 0 为突破点。\n- 假设 0 是一个好人:\n - 基于与 0 的陈述,1 是坏人并说假话。\n - <strong>在认为 0 是好人的情况下,这组玩家中只有一个好人。</strong>\n- 假设 0 是一个坏人:\n - 基于 0 的陈述,由于 0 是坏人,那么他在陈述时可能:\n - 说真话。在这种情况下,0 和 1 都是坏人。\n - <strong>在认为 0 是坏人但说真话的情况下,这组玩家中没有一个好人。</strong>\n - 说假话。在这种情况下,1 是好人。\n - <strong>在认为 0 是坏人且说假话的情况下,这组玩家中只有一个好人。</strong>\n在最佳情况下,至多有一个好人,所以返回 1 。 \n注意,能得到此结论的方法不止一种。\n</pre>\n\n<p> </p>\n\n<p><strong>提示:</strong></p>\n\n<ul>\n\t<li><code>n == statements.length == statements[i].length</code></li>\n\t<li><code>2 <= n <= 15</code></li>\n\t<li><code>statements[i][j]</code> 的值为 <code>0</code>、<code>1</code> 或 <code>2</code></li>\n\t<li><code>statements[i][i] == 2</code></li>\n</ul>\n",
|
||||
"isPaidOnly": false,
|
||||
"difficulty": "Hard",
|
||||
"likes": 29,
|
||||
"likes": 30,
|
||||
"dislikes": 0,
|
||||
"isLiked": null,
|
||||
"similarQuestions": "[]",
|
||||
@@ -155,7 +155,7 @@
|
||||
"__typename": "CodeSnippetNode"
|
||||
}
|
||||
],
|
||||
"stats": "{\"totalAccepted\": \"4.4K\", \"totalSubmission\": \"9.1K\", \"totalAcceptedRaw\": 4357, \"totalSubmissionRaw\": 9068, \"acRate\": \"48.0%\"}",
|
||||
"stats": "{\"totalAccepted\": \"4.5K\", \"totalSubmission\": \"9.2K\", \"totalAcceptedRaw\": 4456, \"totalSubmissionRaw\": 9206, \"acRate\": \"48.4%\"}",
|
||||
"hints": [
|
||||
"You should test every possible assignment of good and bad people, using a bitmask.",
|
||||
"In each bitmask, if the person i is good, then his statements should be consistent with the bitmask in order for the assignment to be valid.",
|
||||
|
Reference in New Issue
Block a user