Leetcode:892. 三维形体的表面积(Java)

在 N * N 的网格上,我们放置一些 1 * 1 * 1  的立方体。

每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。

请你返回最终形体的表面积。

示例 1:

输入:[[2]]
输出:10
示例 2:

输入:[[1,2],[3,4]]
输出:34
示例 3:

输入:[[1,0],[0,2]]
输出:16
示例 4:

输入:[[1,1,1],[1,0,1],[1,1,1]]
输出:32
示例 5:

输入:[[2,2,2],[2,1,2],[2,2,2]]
输出:46
 

提示:

1 <= N <= 50
0 <= grid[i][j] <= 50

代码:

class Solution {

    public int surfaceArea(int[][] grid) {

        if(grid.length==0){

            return 0;

        }

        int count=0;

        for(int i=0;i<grid.length;i++)

        {

            for(int j=0;j<grid[0].length;j++)

            {

                if(grid[i][j]==0){

                    continue;

                }

                if(i==0&&j==0)

                {

                    count+=grid[i][j]*4+2;

                }else if(i==0){

                    count+=grid[i][j]*4+2;

                    count-=2*Math.min(grid[i][j-1],grid[i][j]);

                }else if(j==0){

                    count+=grid[i][j]*4+2;

                    count-=2*Math.min(grid[i][j],grid[i-1][j]);

                }else{

                    count+=grid[i][j]*4+2;

                    count-=2*Math.min(grid[i][j],grid[i-1][j]);

                    count-=2*Math.min(grid[i][j],grid[i][j-1]);

                }

            }

        }

        return count;

    }

}

发布了307 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/hx1043116928/article/details/105086957