题目
类型:几何
解题思路
根据题意进行模拟即可,使用三个变量分别统计三视图的阴影面积:
- ans1:统计俯视图的面积,共有 n∗n 个位置需要被统计,当任意格子 g[i][j] > 0 ,阴影面积加一;
- ans2:统计左视图的面积,共有 n 行需要被统计,每一行对 ans2 的贡献为该行的最大高度;
- ans3:统计主视图的面积,共有 n 列需要被统计,每一列对 ans3 的贡献为该列的最大高度。
代码
class Solution {
public int projectionArea(int[][] g) {
int ans1 = 0, ans2 = 0, ans3 = 0;
int n = g.length;
for (int i = 0; i < n; i++) {
int a = 0, b = 0;
for (int j = 0; j < n; j++) {
if (g[i][j] > 0) ans1++;
a = Math.max(a, g[i][j]);
b = Math.max(b, g[j][i]);
}
ans2 += a; ans3 += b;
}
return ans1 + ans2 + ans3;
}
}