Surface Area of 3D Shapes
程序员文章站
2022-03-30 13:50:01
...
On a N * N
grid, we place some 1 * 1 * 1
cubes.
Each value v = grid[i][j]
represents a tower of v
cubes placed on top of grid cell (i, j)
.
Return the total surface area of the resulting shapes.
Example 1:
Input: [[2]] Output: 10
Example 2:
Input: [[1,2],[3,4]] Output: 34
Example 3:
Input: [[1,0],[0,2]] Output: 16
Example 4:
Input: [[1,1,1],[1,0,1],[1,1,1]] Output: 32
Example 5:
Input: [[2,2,2],[2,1,2],[2,2,2]] Output: 46
Note:
1 <= N <= 50
0 <= grid[i][j] <= 50
题目理解:
用二维数组表示一个三维图形,计算这个三维图形的表面积
解题思路:
计算每一个(x,y)坐标上小方块的表面积,如果这个小方块的上面或者左面有小方块,那么就减去遮挡的部分
代码如下:
class Solution {
public int surfaceArea(int[][] grid) {
int res = 0;
int row = grid.length;
if(row == 0)
return 0;
int col = grid[0].length;
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
if(grid[i][j] == 0)
continue;
res += 4 * grid[i][j] + 2;
if(i > 0) {
res -= Math.min(grid[i][j], grid[i - 1][j]) * 2;
}
if(j > 0) {
res -= Math.min(grid[i][j], grid[i][j - 1]) * 2;
}
}
}
return res;
}
}
推荐阅读
-
微软Surface Book 3现身3D Mark:顶配10nm酷睿i7、GTX 1660 Ti
-
微软双屏Surface Neo?Intel 3D封装5核心亮相:频率仅1.4GHz
-
plot_surface(Axes3D)方法:绘制3D图形
-
CVPR2018三维表面重建AtlasNet: A Papier-Mach ˆ e Approach to Learning 3D Surface Generation
-
微软Surface Book 3现身3D Mark:顶配10nm酷睿i7、GTX 1660 Ti
-
微软双屏Surface Neo?Intel 3D封装5核心亮相:频率仅1.4GHz
-
Surface Reconstruction from 3D Line Segments
-
Surface Area of 3D Shapes
-
Surface Area of 3D Shapes
-
CVPR2018三维表面重建AtlasNet: A Papier-Mach ˆ e Approach to Learning 3D Surface Generation