{
  "type": "code_options",
  "author": "https://github.com/qiyuangong/leetcode",
  "source": "solution.md",
  "exercise_id": "cf5287cf5a0b48f2bad71ab49b950532",
  "keywords": "数组,哈希表,矩阵",
  "title": "矩阵置零",
  "desc": [
    {
      "content": "\n<p>给定一个 <code><em>m</em> x <em>n</em></code> 的矩阵，如果一个元素为 <strong>0 </strong>，则将其所在行和列的所有元素都设为 <strong>0</strong> 。请使用 <strong><a href=\"http://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95\" target=\"_blank\">原地</a></strong> 算法<strong>。</strong></p><p><strong>进阶：</strong></p><ul>\t<li>一个直观的解决方案是使用  <code>O(<em>m</em><em>n</em>)</code> 的额外空间，但这并不是一个好的解决方案。</li>\t<li>一个简单的改进方案是使用 <code>O(<em>m</em> + <em>n</em>)</code> 的额外空间，但这仍然不是最好的解决方案。</li>\t<li>你能想出一个仅使用常量空间的解决方案吗？</li></ul><p> </p><p><strong>示例 1：</strong></p><img alt=\"\" src=\"https://cdn.jsdelivr.net/gh/doocs/leetcode@main/solution/0000-0099/0073.Set%20Matrix%20Zeroes/images/mat1.jpg\" style=\"width: 450px; height: 169px;\" /><pre><strong>输入：</strong>matrix = [[1,1,1],[1,0,1],[1,1,1]]<strong><br />输出：</strong>[[1,0,1],[0,0,0],[1,0,1]]</pre><p><strong>示例 2：</strong></p><img alt=\"\" src=\"https://cdn.jsdelivr.net/gh/doocs/leetcode@main/solution/0000-0099/0073.Set%20Matrix%20Zeroes/images/mat2.jpg\" style=\"width: 450px; height: 137px;\" /><pre><strong>输入：</strong>matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]<strong><br />输出：</strong>[[0,0,0,0],[0,4,5,0],[0,3,1,0]]</pre><p> </p><p><strong>提示：</strong></p><ul>\t<li><code>m == matrix.length</code></li>\t<li><code>n == matrix[0].length</code></li>\t<li><code>1 <= m, n <= 200</code></li>\t<li><code>-2<sup>31</sup> <= matrix[i][j] <= 2<sup>31</sup> - 1</code></li></ul>",
      "language": "markdown"
    }
  ],
  "answer": [
    {
      "content": "",
      "language": "python"
    }
  ],
  "prepared": [
    [
      {
        "content": "",
        "language": "python"
      }
    ],
    [
      {
        "content": "",
        "language": "python"
      }
    ],
    [
      {
        "content": "",
        "language": "python"
      }
    ]
  ],
  "template": {
    "content": "class Solution(object):\n\tdef setZeroes(self, matrix):\n\t\t\"\"\"\n\t\t:type matrix: List[List[int]]\n\t\t:rtype: void Do not return anything, modify matrix in-place instead.\n\t\t\"\"\"\n\t\tif not matrix:\n\t\t\treturn\n\t\tm = len(matrix)\n\t\tif m == 0:\n\t\t\treturn\n\t\tr = []\n\t\tc = []\n\t\tn = len(matrix[0])\n\t\tfor i in range(m):\n\t\t\tfor j in range(n):\n\t\t\t\tif matrix[i][j] == 0:\n\t\t\t\t\tr.append(i)\n\t\t\t\t\tc.append(j)\n\t\tr = set(r)\n\t\tc = set(c)\n\t\tfor i in r:\n\t\t\tfor j in range(n):\n\t\t\t\tmatrix[i][j] = 0\n\t\tfor i in range(m):\n\t\t\tfor j in c:\n\t\t\t\tmatrix[i][j] = 0\n\t\treturn matrix\n# %%\ns = Solution()\nprint(s.setZeroes(matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]))",
    "language": "python"
  },
  "node_id": "dailycode-950e34d34dc94847975e1ca56e54c574",
  "license": "csdn.net",
  "created_at": 1637894159,
  "topic_link": "https://bbs.csdn.net/topics/600470228"
}