在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。
每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。
请你返回最终形体的表面积。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/surface-area-of-3d-shapes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:我采用了暴力法+求表面积
class Solution {
public:
int surfaceArea(vector<vector<int>>& grid) {
int res = 0;
// 暴力法
// 行
for (int i = 0; i < grid.size(); i++) {
// 列
for (int j = 0; j < grid[0].size(); j++) {
// 没有方块
if (grid[i][j] == 0) {
continue;
}
// 先加所有表面积再去除重复的
res += 4 * grid[i][j] + 2;
// 去重
// 上下左右
if ((i - 1) >= 0) {
res -= min(grid[i][j], grid[i-1][j]);
}
if ((i+1) < grid.size()) {
res -= min(grid[i][j], grid[i+1][j]);
}
if ((j-1) >= 0) {
res -= min(grid[i][j], grid[i][j-1]);
}
if ((j+1) < grid[0].size()) {
res -= min(grid[i][j], grid[i][j+1]);
}
}
}
return res;
}
};