
本文最后更新于 825 天前,其中的信息可能已经有所发展或是发生改变。
在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。
输入:[[2]] 输出:10
输入:[[1,2],[3,4]] 输出:34
输入:[[1,0],[0,2]] 输出:16
输入:[[1,1,1],[1,0,1],[1,1,1]] 输出:32
输入:[[2,2,2],[2,1,2],[2,2,2]] 输出:46
1 <= N <= 50 0 <= grid[i][j] <= 50
public int surfaceArea(int[][] grid) {
int sum=0;
int[][][] arr=new int[51][51][51];
// 赋初值
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid.length;j++){
for(int k=0;k<grid[i][j];k++){
arr[i][j][k]=1;
}
}
}
// 开始计算面积
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid.length;j++){
if(arr[i][j][0]!=0)sum+=2;
for(int k=0;arr[i][j][k]!=0;k++){
if(j==0)sum++;
if(j>0&&arr[i][j-1][k]==0)sum++;
if(j<50&&arr[i][j+1][k]==0)sum++;
if(i==0)sum++;
if(i>0&&arr[i-1][j][k]==0)sum++;
if(i<50&&arr[i+1][j][k]==0)sum++;
}
}
}
return sum;
}Post Views: 306