Рубрики
Uncategorized

Решение для кода PHP — D65 892. Площадь поверхности 3D-фигур

Автор оригинала: David Wong.

Ссылка на Заголовок

892. Площадь поверхности 3D-фигур

Анализ названия

Учитывая трехмерный массив, возвращает площадь поверхности цилиндра хода.

размышляющий

В 3D-массиве $arr[$i][$j] Значение представляет высоту цилиндра в этой точке.

Поэтому для каждого значения 6 копий (1 * 1 * 1) площади, которую необходимо рассчитать. Однако, когда есть блоки выше или ниже, соответствующая область должна быть вычтена. Когда в соседних позициях есть квадраты, необходимо вычесть соответствующую площадь поверхности. Необходимо вычесть как текущий, так и соседние столбцы. Но вычитается только высота * 2 более короткого из двух столбцов. Имейте в виду, что это суждение должно быть вынесено в обоих направлениях.

Окончательный код

php
class Solution {

    /**
     * @param Integer[][] $grid
     * @return Integer
     */
    function surfaceArea($grid) {
        $total = 0;
        $ys = count($grid);
        for($i = 0; $i<$ys; $i++){
            $xs = count($grid[$i]);
            for($j = 0; $j<$xs; $j++){
                $total += $grid[$i][$j]*4+2*($grid[$i][$j]!=0);
                if($i+1<$ys){
                    $total -= min($grid[$i][$j],$grid[$i+1][$j])*2;
                }
                if($j+1<$ys){
                    $total -= min($grid[$i][$j],$grid[$i][$j+1])*2;
                }
            }
        }
        return $total;
    }
}

Если вы считаете, что эта статья полезна для вас, вы можете воспользоваться поддержкой генерации энергии ИИ.