LeetCode 35. 三维形体的表面积

题目描述

在 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

解题思路

咳咳咳

题目是真的看不懂

这一题的最大的难度就是看懂题目吧

也许

 [[1,2],[3,4]] 的意思就是坐标0,0放1个正方体,坐标0,1放2个正方体,坐标1,0放3个正方体,坐标1,1放4个正方体,求这些正方体按这些坐标摆放后形成的立体图形的表面积

代码如下

package leetcode;

public class SurfaceArea {
    public int surfaceArea(int[][] grid) {
        int result=0;
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[i].length; j++) {
                if (grid[i][j]!=0) 
                    //假设每个v=grid[i][j]都是独立的。
                    result+=grid[i][j]*4+2;
                //减去面贴在一起的情况
                if (i>0)
                    result-=Math.min(grid[i-1][j], grid[i][j])*2;
                if (j>0)
                    result-=Math.min(grid[i][j-1], grid[i][j])*2;
            }
        }
        return result;
    }
}
原文地址:https://www.cnblogs.com/Transkai/p/12564955.html