LeetCode:892. 三维形体的表面积
本文最后更新于 1464 天前,其中的信息可能已经有所发展或是发生改变。

题目描述

在 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分钟,读题两小时
  • 挺简单的,就是求个表面积而已。

代码

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;
    }
作者:Yuyy
博客:https://yuyy.info
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇