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


    在 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

    该题题目我看了好久都没有看明白,可能是理解能力不太好吧,哈哈哈,言归正传,经过在评论区一顿海淘,对题目有了一定的的理解,可以当作输入的值为一个矩阵,每一个元素对应了每一个位置上,小方块的个数,下面我把第一个示例的模型做了一下,有些粗糙。。

    接下来的的示例虽然比这个复杂一些,但大差不差就是那么个意思。

    思路:利用遍历,将整体化小,一块一块的加,以最前和最左为坐标轴,依次检查,利用三重循环,第一重第二重是二维数组的行列,第三重是每一落小方块的个数,然后加上条件,判断下方,左方,和前方,代码实现如下。

    int surfaceArea(int** grid, int gridSize, int* gridColSize){
        int i,j,k,sum=0;
        for(i=0;i<gridSize;i++){
            for(j=0;j<*gridColSize;j++){
                for(k=0;k<grid[i][j];k++){
                    sum+=6;
                    if(k>0){
                        sum-=2;
                    }
                    if(i>0&&k<grid[i-1][j]){
                        sum-=2;
                    }
                    if(j>0&&k<grid[i][j-1]){
                        sum-=2;
                    }
                }
            }
        }
        return sum;
    }
  • 相关阅读:
    奇偶数排序
    买房子
    首字母大写
    学分绩点
    加减乘除
    最简真分数
    Hdu 1058 Humble Numbers
    Hdu 1032 The 3n + 1 problem
    Hdu 1040 As Easy As A+B
    Hdu 1025 Constructing Roads In JGShining's Kingdom
  • 原文地址:https://www.cnblogs.com/woju/p/12571173.html
Copyright © 2020-2023  润新知