【leetcode】岛屿的周长

//没有额外单独格子干扰情况
int
islandPerimeter(int **grid, int gridSize, int* gridColSize) { int len = 0; for (int i = 0; i < gridSize; i++) { for (int j = 0; j < *gridColSize; j++) { if (grid[i][j] == 1) { (i == 0 || grid[i - 1][j] == 0) ? len++ : ' '; (i == gridSize - 1 || grid[i + 1][j] == 0) ? len++ : ' '; (j == 0 || grid[i][j - 1] == 0) ? len++ : ' '; (j == (*gridColSize) - 1 || grid[i][j + 1] == 0) ? len++ : ' '; } } } return len; }
//有额外格子干扰情况
int islandPerimeter(int** grid, int gridSize, int* gridColSize){
    int i,j,perimeter=0,num,count=0;
    for (i=0; i<gridSize; i++)
    {
        for (j=0; j<gridColSize[i]; j++)
        {
            num=4;
            if (grid[i][j])
            {
                count++;
                if (j-1>=0 && grid[i][j-1]) num--;
                if (j+1<gridColSize[i] && grid[i][j+1]) num--;
                if (i-1>=0 && grid[i-1][j]) num--;
                if (i+1<gridSize && grid[i+1][j]) num--;
                perimeter += (num==4)? 0: num;
            }            
        }
    }
    return (count != 1)? perimeter: 4;
}
原文地址:https://www.cnblogs.com/ganxiang/p/13724684.html