题目

类型:几何

image.png

解题思路

根据题意进行模拟即可,使用三个变量分别统计三视图的阴影面积:

  • ans1:统计俯视图的面积,共有 n∗n 个位置需要被统计,当任意格子 g[i][j] > 0 ,阴影面积加一;
  • ans2:统计左视图的面积,共有 n 行需要被统计,每一行对 ans2 的贡献为该行的最大高度;
  • ans3:统计主视图的面积,共有 n 列需要被统计,每一列对 ans3 的贡献为该列的最大高度。

代码

  1. class Solution {
  2. public int projectionArea(int[][] g) {
  3. int ans1 = 0, ans2 = 0, ans3 = 0;
  4. int n = g.length;
  5. for (int i = 0; i < n; i++) {
  6. int a = 0, b = 0;
  7. for (int j = 0; j < n; j++) {
  8. if (g[i][j] > 0) ans1++;
  9. a = Math.max(a, g[i][j]);
  10. b = Math.max(b, g[j][i]);
  11. }
  12. ans2 += a; ans3 += b;
  13. }
  14. return ans1 + ans2 + ans3;
  15. }
  16. }