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 <= 500 <= grid[i][j] <= 50
--------------------------------------------
It's easy to be affected by the first question:
class Solution:
def surfaceArea(self, grid: List[List[int]]) -> int:
N,res = len(grid),0
rmax,cmax = [0 for i in range(N)],[0 for i in range(N)]
for i in range(N):
for j in range(N):
cur = grid[i][j]
if (cur > 0):
res += cur*4+2
if (i > 0):
res -= min(cur,grid[i-1][j])*2
if (j > 0):
res -= min(cur,grid[i][j-1])*2
return res

本文介绍了一个算法问题,即在一个N*N的网格上放置一些1*1*1的立方体,每个网格单元的值代表该位置立方体的数量。文章通过示例详细解释了如何计算最终形状的总表面积,并提供了一段Python代码实现。
176

被折叠的 条评论
为什么被折叠?



