892. 三维形体的表面积

  • 题目:
  • 解题思路:
  • 源码:
  • 踩坑点:

题目:

解题思路:

我们先来理解一下题意:

[[1,2],[3,4]]就是一个二维数组A。A[i][j]表示每一个以单位正方形为底的空间上正方体的个数。
[[1,2],[3,4]]的意思就是假如我们把底面看作四个单位正方形,1、2、3、4就表示每个正方形上有正方体的个数。如下图,第一个正方形上有一个正方体;第二个正方形上有二个正方体;第三个正方形上有三个正方体;第四个正方形上有四个正方体。


解题方法:

我们可以对这样的一个二位数组进行遍历,因为相邻的面不能算在表面积中,所以解题的方法有俩种:
1、累减法:先将所有的面算出来,不考虑相邻不相邻,例如一个8个正方形,那么一共就有8*6=48个面;然后判断有没有相邻,如果相邻,那么就减去较小高度×2;这样就会把相邻的面去掉,得到最终结果
2、累加法:初始便面积为0,然后判断每一个正方体除去相邻面后剩下的面,最后相加

源码:

//累减法
int surfaceArea(int** grid, int gridSize, int* gridColSize){int i,j;int area = 0;int row = gridSize;int col = *gridColSize;for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (grid[i][j] > 0) area += (grid[i][j] * 4 + 2);}}for(i=0;i<row;i++){for(j=0;j<col;j++){if(j+1 < col && grid[i][j] >= grid[i][j+1])area = area - grid[i][j+1] * 2;if(j+1 < col && grid[i][j] < grid[i][j+1])area = area - grid[i][j] * 2;if(i+1 < gridSize && grid[i][j] >= grid[i+1][j])area = area - grid[i+1][j] * 2;if(i+1 < gridSize && grid[i][j] < grid[i+1][j])area = area - grid[i][j] * 2;}}return area;
}

踩坑点:

1、因为要判断是否相邻,所以会有i,j的邻接值的判断;我的解题方法只判断右侧和下侧,所以最后一列的右侧肯定不用判断,因为最后一列的右侧没有东西了;最后一行的下侧也不用判断,因为最后一行的下侧也没有东西了,所以有了代码中的i,j临界值的判断。
2、代码中的col和row的定义也没有必要,因为总是正方形,col=row=gridSize,所以可以统一用gridSize代替。

LeetCode:892. 三维形体的表面积相关推荐

  1. LeetCode 892. 三维形体的表面积

    892. 三维形体的表面积 思路:每列的长方形体积为4*grid[i][j]+2,减去抵消掉的表面积 class Solution { public:int surfaceArea(vector< ...

  2. LeetCode 892. 三维形体的表面积(数学)

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

  3. Leetcode:892. 三维形体的表面积(Java)

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

  4. 力扣892.三维形体的表面积

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

  5. LeetCode(892)——三维形体的表面积(JavaScript)

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

  6. LeetCode简单题之三维形体的表面积

    题目 给你一个 n * n 的网格 grid ,上面放置着一些 1 x 1 x 1 的正方体.每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上. 放置好正方体 ...

  7. LeetCode 三维形体的表面积

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

  8. python求球的表面积_892. 三维形体的表面积(Python)

    题目 难度:★★☆☆☆ 类型:几何.数学.二维数组 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, ...

  9. Leetcode-892. 三维形体的表面积

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

最新文章

  1. CSS3 Animation动画的十二原则
  2. 基于python3的一次简单的请求url接口返回json类型结果实例。
  3. 郊游 ID:PICNIC
  4. Matlab实现字符串分割
  5. 信息传递服务器,AJAX的与服务器之间的信息传递原理(初学)
  6. linux epoll机制对TCP 客户端和服务端的监听C代码通用框架实现
  7. 信息学奥赛一本通C++语言——1087:级数求和
  8. 385. Mini Parser
  9. Android xmlns 的作用及其自定义
  10. NSString属性什么时候用copy,什么时候用strong?【转】
  11. 一公司的面试题(泛型和数组的问题)
  12. C++学生信息管理系统7.0
  13. 【面试题】计算机网络 -- 常见面试题总结
  14. 白夜追凶 :手 Q 图片的显示和发送逻辑
  15. 学校计算机机房解说词,学校会议室解说词.doc
  16. 4.19内核SLUB内存分配器
  17. c# picturebox 图像拖拽和缩放
  18. Java-Stream流,异常捕获
  19. c语言char a 4,char a:4;是什么意思C++
  20. xp计算机如何查看内存大小,怎样查看电脑内存大小_xp怎么看电脑内存大小

热门文章

  1. 现在人人都要准备的2020年六个事关职业生涯的技术趋势
  2. 我们前端忙成狗 人家后端写sql?
  3. Google要回归国内,百度李彦宏居然不怕?我想笑
  4. 程序员为什么要少写代码?
  5. 目标群体是什么意思_抖音代运营日常主要是做什么的?
  6. python中summary_python summary 1: class
  7. 机器学习 | EM 算法原理
  8. Moody Photoshop Panel for mac(ps专业色彩调色扩展面板)
  9. 剪映专业版Mac版上线,来讲讲体验感吧
  10. 1.5编程基础之循环控制 32 求分数序列和 python