友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
|
|
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。

公众号的微信号是: jikerizhi。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
883. 三维形体投影面积
在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体。
每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。
现在,我们查看这些立方体在 xy 、yz 和 zx 平面上的 投影。
投影 就像影子,将 三维 形体映射到一个 二维 平面上。从顶部、前面和侧面看立方体时,我们会看到“影子”。
返回 所有三个投影的总面积 。
示例 1:
输入:[[1,2],[3,4]] 输出:17 解释:这里有该形体在三个轴对齐平面上的三个投影(“阴影部分”)。
示例 2:
输入:grid = [[2]] 输出:5
示例 3:
输入:[[1,0],[0,2]] 输出:8
提示:
-
n == grid.length == grid[i].length -
1 <= n <= 50 -
0 <= grid[i][j] <= 50
思路分析
简单的数学模拟题。
-
一刷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* @author D瓜哥 · https://www.diguage.com
* @since 2026-08-23 19:00:37
*/
public int projectionArea(int[][] grid) {
int xy = 0;
int xz = 0;
int yz = 0;
int n = grid.length;
for (int c = 0; c < n; c++) {
int y = 0;
int z = 0;
for (int r = 0; r < n; r++) {
yz += grid[r][c] > 0 ? 1 : 0;
y = Math.max(y, grid[c][r]);
z = Math.max(z, grid[r][c]);
}
yz += y;
yz += z;
}
return xy + xz + yz;
}

