版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
leetcode 算法题892 (简单233) 三维形体的表面积
- 题目介绍
在 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
- 解法一
/**
* @param {number[][]} grid
* @return {number}
*/
var surfaceArea = function(grid) {
let i = area = 0;
while (i < grid.length) {
let j = 0;
while(j < grid[i].length) {
area += getArea(grid, i, j++)
}
i++;
}
return area;
};
const getArea = (grid, i, j) => {
let area = 0
if(grid[i][j]) {
area += 2;
}
if(i === 0) {
area += grid[i][j];
} else {
area += Math.abs(grid[i][j] - grid[i - 1][j]);
}
if(i === grid.length - 1) {
area += grid[i][j];
}
if(j === 0) {
area += grid[i][j];
} else {
area += Math.abs(grid[i][j] - grid[i][j - 1]);
}
if(j === grid[i].length - 1) {
area += grid[i][j];
}
return area;
}
执行用时 : 76 ms, 在所有 JavaScript 提交中击败了93.59%的用户
内存消耗 : 35.1 MB, 在所有 JavaScript 提交中击败了50.00%的用户