2022年11月20日 星期日

[463] Island Perimeter

真是使人開心的題目~(大心)
不過一開始忘記把 == 0 的情境拿掉了 XD
int islandPerimeter(int** grid, int gridSize, int* gridColSize){
int perimeter=0;
for (int i=0;i<gridSize; i++)
for (int j=0;j< *gridColSize; j++)
{
if (grid[i][j]==0)
continue;
if (grid[i][j]==1)
perimeter+=4;
if (i>0 && grid[i-1][j]==1)
{
perimeter-=2;
}
if (j>0 && grid[i][j-1]==1)
perimeter-=2;
}
return perimeter;
}

修一修可以寫到這麼短這樣。
int islandPerimeter(int** grid, int gridSize, int* gridColSize){
    int perimeter=0;
    for (int i=0;i<gridSize; i++)
        for (int j=0;j< *gridColSize; j++)
            if (grid[i][j]==1)
            {
                perimeter+=4;
                if (i>0 && grid[i-1][j]==1)
                    perimeter-=2;
                if (j>0 && grid[i][j-1]==1)
                    perimeter-=2;
            }
    return perimeter;
}

沒有留言:

張貼留言