题目
类型:几何
解题思路
根据题意进行模拟即可,使用三个变量分别统计三视图的阴影面积:
- 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;}}
