892. 三维形体的表面积
程序员文章站
2024-03-15 11:26:47
...
题目描述
思路
统计有多少个立方体sum,然后统计一下有多少相邻互相覆盖的面cover(有多少个面被其它面盖住)
最终表面积 = sum * 6 - cover * 2;
代码
class Solution {
public:
int surfaceArea(vector<vector<int>>& grid) {
if(grid.size() < 1)
return 0;
int sum = 0;
int cover = 0;
for(int i = 0; i < grid.size() ; i++)
{
for(int j = 0; j < grid[i].size() ; j++)
{
//加上这一个位置的立方体数
sum += grid[i][j];
if(grid[i][j] > 1)
{
//如果这一位置立方体数大于一,说明有覆盖。加上如果有两个立方体就有一个覆盖。所以记得减1
cover += grid[i][j] - 1;
}
if(i > 0)
{
//加上上一行同一列的覆盖
cover += min(grid[i-1][j], grid[i][j]);
}
if(j > 0)
{
//加上上一列同一行的覆盖
cover += min(grid[i][j-1], grid[i][j]);
}
}
}
return sum * 6 - cover * 2;
}
};
下一篇: tensorborad