leetcode 892. 三维形体的表面积
题目描述:
在 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
最开始!!!!题目半天没看懂......捂脸..
如上图:输入为:【【2,1】,【1,0】】,求这四个立方体组成的整体的表面积,立方体个数*6-接触面*2=4*6-3*2=18
class Solution { public: int surfaceArea(vector<vector<int>>& grid) { int i,j,number; int sum=0,num = 0; for(i=0;i<grid.size();i++) { for(j=0;j<grid[0].size();j++) { if(grid[i][j]!=0) { sum = sum+grid[i][j]; } if(grid[i][j]>1) { num = num+grid[i][j]-1; } if(i+1 < grid[0].size() && grid[i+1][j] != 0) //下 { num = num+min(grid[i][j],grid[i+1][j]); } if(j+1 < grid.size() && grid[i][j+1] != 0) //右 { num = num+min(grid[i][j],grid[i][j+1]); } } } number = sum*6-num*2; return number; } };
题目链接:https://leetcode-cn.com/problems/surface-area-of-3d-shapes/