mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
81 lines
5.0 KiB
HTML
81 lines
5.0 KiB
HTML
<p>有一个 <strong>矩形网格</strong> 状的农场,划分为 <code>m</code> 行 <code>n</code> 列的单元格。每个格子要么是 <strong>肥沃的</strong> (用 <code>1</code> 表示),要么是 <strong>贫瘠</strong> 的(用 <code>0</code> 表示)。网格图以外的所有与格子都视为贫瘠的。</p>
|
||
|
||
<p>农场中的 <strong>金字塔</strong> 区域定义如下:</p>
|
||
|
||
<ol>
|
||
<li>区域内格子数目 <strong>大于 </strong><code>1</code> 且所有格子都是 <strong>肥沃的</strong> 。</li>
|
||
<li>金字塔 <strong>顶端</strong> 是这个金字塔 <strong>最上方</strong> 的格子。金字塔的高度是它所覆盖的行数。令 <code>(r, c)</code> 为金字塔的顶端且高度为 <code>h</code> ,那么金字塔区域内包含的任一格子 <code>(i, j)</code> 需满足 <code>r <= i <= r + h - 1</code> <strong>且</strong> <code>c - (i - r) <= j <= c + (i - r)</code> 。</li>
|
||
</ol>
|
||
|
||
<p>一个 <strong>倒金字塔</strong> 类似定义如下:</p>
|
||
|
||
<ol>
|
||
<li>区域内格子数目 <strong>大于</strong> <code>1</code> 且所有格子都是 <b>肥沃的</b> 。</li>
|
||
<li>倒金字塔的 <strong>顶端</strong> 是这个倒金字塔 <strong>最下方</strong> 的格子。倒金字塔的高度是它所覆盖的行数。令 <code>(r, c)</code> 为金字塔的顶端且高度为 <code>h</code> ,那么金字塔区域内包含的任一格子 <code>(i, j)</code> 需满足 <code>r - h + 1 <= i <= r</code> <strong>且</strong> <code>c - (r - i) <= j <= c + (r - i)</code> 。</li>
|
||
</ol>
|
||
|
||
<p>下图展示了部分符合定义和不符合定义的金字塔区域。黑色区域表示肥沃的格子。</p>
|
||
|
||
<p><img src="https://assets.leetcode.com/uploads/2021/11/08/image.png" style="width: 700px; height: 156px;"></p>
|
||
|
||
<p>给你一个下标从 <strong>0</strong> 开始且大小为 <code>m x n</code> 的二进制矩阵 <code>grid</code> ,它表示农场,请你返回 <code>grid</code> 中金字塔和倒金字塔的 <strong>总数目</strong> 。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>示例 1:</strong></p>
|
||
|
||
<p><img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/eg11.png" style="width: 200px; height: 102px;"> <img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/exa12.png" style="width: 200px; height: 102px;"> <img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/exa13.png" style="width: 200px; height: 102px;"></p>
|
||
|
||
<pre><b>输入:</b>grid = [[0,1,1,0],[1,1,1,1]]
|
||
<b>输出:</b>2
|
||
<strong>解释:</strong>
|
||
2 个可能的金字塔区域分别如上图蓝色和红色区域所示。
|
||
这个网格图中没有倒金字塔区域。
|
||
所以金字塔区域总数为 2 + 0 = 2 。
|
||
</pre>
|
||
|
||
<p><strong>示例 2:</strong></p>
|
||
|
||
<p><img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/eg21.png" style="width: 180px; height: 122px;"> <img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/exa22.png" style="width: 180px; height: 122px;"> <img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/exa23.png" style="width: 180px; height: 122px;"></p>
|
||
|
||
<pre><b>输入:</b>grid = [[1,1,1],[1,1,1]]
|
||
<b>输出:</b>2
|
||
<strong>解释:</strong>
|
||
金字塔区域如上图蓝色区域所示,倒金字塔如上图红色区域所示。
|
||
所以金字塔区域总数目为 1 + 1 = 2 。
|
||
</pre>
|
||
|
||
<p><strong>示例 3:</strong></p>
|
||
|
||
<p><img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/eg3.png" style="width: 149px; height: 150px;"></p>
|
||
|
||
<pre><b>输入:</b>grid = [[1,0,1],[0,0,0],[1,0,1]]
|
||
<b>输出:</b>0
|
||
<strong>解释:</strong>
|
||
网格图中没有任何金字塔或倒金字塔区域。
|
||
</pre>
|
||
|
||
<p><strong>示例 4:</strong></p>
|
||
|
||
<p><img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/eg41.png" style="width: 180px; height: 144px;"> <img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/eg42.png" style="width: 180px; height: 144px;"> <img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/eg43.png" style="width: 180px; height: 144px;"> <img alt="" src="https://assets.leetcode.com/uploads/2021/10/23/eg44.png" style="width: 180px; height: 144px;"></p>
|
||
|
||
<pre><strong>输入:</strong>grid = [[1,1,1,1,0],[1,1,1,1,1],[1,1,1,1,1],[0,1,0,0,1]]
|
||
<b>输出:</b>13
|
||
<strong>解释:</strong>
|
||
有 7 个金字塔区域。上图第二和第三张图中展示了它们中的 3 个。
|
||
有 6 个倒金字塔区域。上图中最后一张图展示了它们中的 2 个。
|
||
所以金字塔区域总数目为 7 + 6 = 13.
|
||
</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>m == grid.length</code></li>
|
||
<li><code>n == grid[i].length</code></li>
|
||
<li><code>1 <= m, n <= 1000</code></li>
|
||
<li><code>1 <= m * n <= 10<sup>5</sup></code></li>
|
||
<li><code>grid[i][j]</code> 要么是 <code>0</code> ,要么是 <code>1</code> 。</li>
|
||
</ul>
|