LeetCode 892三次元の体表面積(ジャワ)

892三次元体表面積

グリッド上のN * N、我々はいくつかのキューブ* 1 * 1を入れました。
各値v =グリッド[I] [jが 】 対応するセル(i、j)の上に重ねVキューブを表します。
最終体表面積に戻ってください。

実施例1:
入力:[1,2]、[3,4]
出力:34

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/surface-area-of-3d-shapes
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

方法:被覆された表面の数を保存するメモリキューブの可変総数、別の変数を使用して、反復します。

class Solution {
    public int surfaceArea(int[][] grid) {
        int block=0;//统计共有多少立方体
        int count=0;//统计共有多少面被遮盖
        for(int i=0;i<grid.length;i++)
        {
            for(int j=0;j<grid[i].length;j++)
            {
                block+=grid[i][j];//累加每个坐标上的立方体个数
                if(grid[i][j]!=0)
                {
                    count+=grid[i][j]-1;//统计上下被遮盖的面数,即上下叠放造成的遮盖
                }
                if(i>0)
                {
                    //统计前后叠放造成的遮盖的面数,每一行只需要统计前面被遮盖的面数,因为当前行后面被遮盖的面数被后一行前面被遮盖的面数包含了,只需要统计一次
                    count+=Math.min(grid[i][j],grid[i-1][j]);
                }
                if(j>0)
                {
                    count+=Math.min(grid[i][j],grid[i][j-1]);//统计左右叠放造成的遮盖面数
                }
            }
        }
        return block*6-count*2;
    }
}
公開された88元の記事 ウォンの賞賛0 ビュー2158

おすすめ

転載: blog.csdn.net/nuts_and_bolts/article/details/105093940