友情支持

如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜

支付宝

微信

有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。

wx jikerizhi

公众号的微信号是: jikerizhi因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。

883. 三维形体投影面积

n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体。

每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。

现在,我们查看这些立方体在 xyyzzx 平面上的 投影

投影 就像影子,将 三维 形体映射到一个 二维 平面上。从顶部、前面和侧面看立方体时,我们会看到“影子”。

返回 所有三个投影的总面积

示例 1:

0883 01
输入:[[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;
}