跳至正文

每日一题——883. 三维形体投影面积

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;
    }
};

 

发表评论

您的电子邮箱地址不会被公开。