Leetcode PHP題解--D38 463. Island Perimeter

463. Island Perimeter

題目連接

463. Island Perimeterphp

題目分析

給定一個二維數組,表明一個二維表格。
裏面包含01兩種數字。數組

1表明有內容,0表明沒有。.net

計算有內容的格子的周長。code

思路

最簡單的辦法是,判斷當前格子是否位1,且上下左右是否爲0。leetcode

當任意一個方向有0時,那個方向計算有一個邊長。get

當都爲0時,即當前位置是單獨的一個格子,算上下左右共4條邊。io

最終代碼

<?php
class Solution {
    function islandPerimeter($grid) {
        $edges = 0;
        $width = count($grid[0]);
        $height = count($grid);
        foreach($grid as $y=>$row){
            foreach($row as $x=>$col){
                if($col==0){
                    continue;
                }
                if(!isset($grid[$y][$x+1])||$grid[$y][$x+1]==0){
                    $edges++;
                }
                if(!isset($grid[$y][$x-1])||$grid[$y][$x-1]==0){
                    $edges++;
                }
                if(!isset($grid[$y+1][$x])||$grid[$y+1][$x]==0){
                    $edges++;
                }
                if(!isset($grid[$y-1][$x])||$grid[$y-1][$x]==0){
                    $edges++;
                }
            }
        }
        return $edges;
    }
}

若以爲本文章對你有用,歡迎用愛發電資助。function

相關文章
相關標籤/搜索