1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-09-02 22:13:28 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
This commit is contained in:
2022-05-02 23:44:12 +08:00
parent 7ea03594b3
commit 2a71c78585
4790 changed files with 11696 additions and 10944 deletions

View File

@@ -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>另外,玩家不会对自己进行陈述。形式上,对所有&nbsp;<code>0 &lt;= i &lt; n</code> ,都有 <code>statements[i][i] = 2</code> 。</p>\n\n<p>根据这 <code>n</code> 个玩家的陈述,返回可以认为是 <strong>好人</strong> 的 <strong>最大</strong> 数目。</p>\n\n<p>&nbsp;</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>&nbsp;</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 &lt;= n &lt;= 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.",