leetcode 算法题892 (简单233) 三维形体的表面积

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/FYuu95100/article/details/102724324

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%的用户

猜你喜欢

转载自blog.csdn.net/FYuu95100/article/details/102724324