883. 三维形体投影面积
我早上看了半天愣是没看出来这个输入是怎么做到的
后来下午问了才整明白
输入的值就是v
对于示例1
i=0 j=0 得到的v值是1
以此类推
那么三个面的投影就是数学了:
xy也就是上面 只要v不等于0就算一个 统计一遍就行
yz是侧面,看的是同一x轴上最大的那个
例如说00要和01比 10要和11比
xz是前面,看的就是同一y轴上最大的那个
那就是00要和10比 01要和11比
搞清楚之后就可以很快做出来了
class Solution { public: int projectionArea(vector<vector<int>> &grid) { int n = grid.size(); int xy = 0; int yz = 0; int xz = 0; for (int i = 0; i < n; i++) { int yzHeight = 0; int zxHeight = 0; for (int j = 0; j < n; j++) { xy += grid[i][j] > 0 ? 1 : 0; yzHeight = max(yzHeight, grid[j][i]); zxHeight = max(zxHeight, grid[i][j]); } yz += yzHeight; xz += zxHeight; } return xy+yz+xz; } };