首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >LeetCode:892. 三维形体的表面积

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

作者头像
Yuyy
发布2022-06-28 20:03:11
发布2022-06-28 20:03:11
3120
举报

本文最后更新于 825 天前,其中的信息可能已经有所发展或是发生改变。

题目描述

在 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 200道。想起大三每周参加学校的算法训练,学习算法,参加比赛,还有当时纪超说的“算法才是王道”,深有感触,于是在个人计划里加上了算法刷题。
  • 太久没弄了,都忘了C++的那些常用函数,连头文件都不知道导什么,再加上Dev C++这个IDE调试起来实在痛苦,于是打算转战JAVA。
  • 这道题分类是简单,但是当我读题时却蒙了,完全读不懂,最终是看看了评论才明白是怎么回事。真的是解题5分钟,读题两小时
  • 挺简单的,就是求个表面积而已。

代码

代码语言:javascript
复制
public int surfaceArea(int[][] grid) {
        int sum=0;
        int[][][] arr=new int[51][51][51];
//        赋初值
        for(int i=0;i<grid.length;i++){
            for(int j=0;j<grid.length;j++){
                for(int k=0;k<grid[i][j];k++){
                    arr[i][j][k]=1;
                }
            }
        }
//        开始计算面积
        for(int i=0;i<grid.length;i++){
            for(int j=0;j<grid.length;j++){
                if(arr[i][j][0]!=0)sum+=2;
                for(int k=0;arr[i][j][k]!=0;k++){
                    if(j==0)sum++;
                    if(j>0&&arr[i][j-1][k]==0)sum++;
                    if(j<50&&arr[i][j+1][k]==0)sum++;
                    if(i==0)sum++;
                    if(i>0&&arr[i-1][j][k]==0)sum++;
                    if(i<50&&arr[i+1][j][k]==0)sum++;
                }
            }
        }
        return sum;
    }

Post Views: 306

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-3-25 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 示例 1:
  • 示例 2:
  • 示例 3:
  • 示例 4:
  • 示例 5:
  • 提示:
  • 思路
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档