463. Island Perimeter

463. Island Perimeter

problem link

food for thought 

 先理解,1個node有2個邊

2個node緊鄰會減少2個邊

所以我的解題思路為計算總共幾個node(N)、及計算有多少個鄰邊(M)

周長公式即為:N*4 - M*2

C++ solution
int islandPerimeter(vector<vector<int>>& grid) 
{
    int count_island = 0;
    int count_adjacent = 0;
    for (int i = 0; i < grid.size(); ++i)
        for (int j = 0; j < grid[i].size(); ++j) if (grid[i][j])
        {
            ++count_island;
            if (i < grid.size()-1 && grid[i + 1][j]) 
                ++count_adjacent;
            if (j < grid[i].size() -1 && grid[i][j+1]) 
                ++count_adjacent;
        }
    
    return count_island * 4 - count_adjacent * 2;
}