美文网首页
打卡第25天:三维体的表面积

打卡第25天:三维体的表面积

作者: 前端艾希 | 来源:发表于2020-03-25 22:31 被阅读0次

1. 题目

N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。
每个值v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。
请你返回最终形体的表面积。

示例 1:

输入:[[2]]
输出:10
示例 2:

输入:[[1,2],[3,4]]
输出:34
示例 3:

输入:[[1,0],[0,2]]
输出:16
示例 4:

输入:[[1,1,1],[1,0,1],[1,1,1]]
输出:32
示例 5:

输入:[[2,2,2],[2,1,2],[2,2,2]]
输出:46

提示:

1 <= N <= 50
0 <= grid[i][j] <= 50

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/surface-area-of-3d-shapes

2. 解题思路

哇,拿到这个题竟然半天没看懂题意。。。后来没办法看了别人的题解才明白这题是个啥意思,以第一个输入为例:function([[2]]) = 10,意思是在grid[0][0]这个坐标点上放置了grid[0][0] = 2个边长为1的立方体,所以因为两个立方体是重叠在一起的,那么表面积就是10
所以说,输入的是一个矩阵,矩阵的每一个值就是当前坐标点上放置的立方体的个数,是不是有种恍然大悟的赶脚~~。所以这道题可以这样做:先统计立方体的总个数count,那么总面积就是count * 6,然后减去立方体与立方体之间接触的面积,设接触的面为touch,那么因为接触失去的面积就是touch * 2,所以总面积就是count * 6 - touch * 2

2.1 代码

/**
 * @param {number[][]} grid
 * @return {number}
 */
var surfaceArea = function(grid) {
    let [count, touch] = [0, 0]
    for (let i=0; i < grid.length; i++) {
        for (let j=0; j < grid[0].length; j++) {
            count += grid[i][j]
            touch += grid[i][j] ? grid[i][j] - 1 : 0 // 统计在竖直方向上的接触面
            if (i > 0) touch += Math.min(grid[i][j], grid[i-1][j]) // 统计在当前柱子与左边柱子的接触面
            if (j < grid[0].length - 1) touch += Math.min(grid[i][j], grid[i][j+1]) // 统计当前柱子与后面的柱子的接触面
        }
    }
    return count * 6 - touch * 2
};
// 不需要统计前面 和 右边的接触数量是因为避免重复

2.2 图示

可能有的小伙伴不知道我所说的左边,后面是什么方向,故作此图:


A0D12AFDB3259141DA06CF598D7F9113.png

2.3 性能

image.png

相关文章

  • 打卡第25天:三维体的表面积

    1. 题目 在N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值v = grid[i][j...

  • 892-三维型体的表面积

    三维型体的表面积 题目 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。 每个值 v = ...

  • 计算表面积

    0X00 算法总结 892. 三维形体的表面积 分别计算每个柱体的表面积, 然后减去每个柱子的贴合部分 比如有下面...

  • 课堂实录——长方体的表面积

    教学目标: 1、经历操作,观察活动的过程,探究长方体、正方体表面积的意义,掌握长方体、正方体的表面积的计算方法,并...

  • 《长方体和正方体》 - 草稿

    这几天我们学习了长方体和正方体,其中有表面积、体积、容积,今天我就是来讲一下长方体和正方体的体积表面积是如何计算的...

  • 圆柱圆锥的体积

    上次我们说了圆柱和圆锥的表面积,而三维立体图形,除表面积之外,还有一个重要的部分:体积。 首先我们来看看圆...

  • 立方体打洞后的表面积求解

    立方体打洞后的表面积求解: 立方体有6个面,原来的表面积是 6 × 3 × 3 × 3 = 54, 穿孔后少了上下...

  • LeetCode | 0892. Surface Area of

    LeetCode 0892. Surface Area of 3D Shapes三维形体的表面积【Easy】【Py...

  • 知识点超全的〈长方体和正方体的表面积〉

    第五讲长方体和正方体的表面积 长方体表面积=(长×宽+长×高+宽×高)×2 =(a×b+a×c+b×c)×2 =(...

  • 教学随笔——长方体的表面积

    长方体表面积的课堂片段 师:同学们,今天我们学习表面积(还没有提到长方体)…… 生:老师,什么是表面积? 师:想知...

网友评论

      本文标题:打卡第25天:三维体的表面积

      本文链接:https://www.haomeiwen.com/subject/xrjfuhtx.html