LeetCode 892 - área de superficie corporal tridimensional

Descripción Título
de N * N rejilla, que colocó varios cubos de 1 * 1 * 1.
Cada valor v = rejilla [i] [j ] denota el v cubo superpuesta sobre la celda correspondiente (i, j).
Por favor, volver a la superficie corporal final.
Ejemplo 1:
Entrada: [[2]]
de salida: 10
Ejemplo 2:
Entrada: [[1,2], [3,4]]
de salida: 34
Ejemplo 3:
Entrada: [[1,0], [0,2 ]]
de salida: 16
ejemplo 4:
entrada: [[1,1,1], [1,0,1], [1,1,1]]
de salida: 32
ejemplo 5:
entrada: [[2,2,2 ], [2,1,2], [2,2,2]]
de salida: 46

Solución: solución violenta

Aquí Insertar imagen Descripción
En el Ejemplo 2, por ejemplo,

En primer lugar, una columna para ver un pilar, cada pilar se compone de: dos superficie inferior (superficie superior / superficie inferior) del cubo han contribuido + toda la zona de superficie de cuatro lados

Entonces, después de que el conjunto reflexivo columna, tenemos que estar unidos a la superficie pierde, el área de superficie de dos columnas que se ajusten a las altas mínimo de dos pilares 2 *

class Solution {
public:
    int surfaceArea(vector<vector<int>>& grid) {
        int n = grid.size(), area = 0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                int hi = grid[i][j];
                if(hi>0)
                {
                    area += hi*4+2;
                    area -= i>0?min(hi, grid[i-1][j])*2:0;
                    area -= j>0?min(hi, grid[i][j-1]) *2:0;
                }
            }
        }
        return area;
    }
};
Publicados 152 artículos originales · ganado elogios 22 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/qq_38204302/article/details/105104634
Recomendado
Clasificación