463. 岛屿的周长

225 阅读1分钟

题目描述

image.png

思路

  • 遍历整个数组,遇到1,假设当前cur为4,上下左右如果出现一个1就-1,然后把cur加到res中

代码

class Solution {
    public int islandPerimeter(int[][] grid) {
        int m = grid.length, n = grid[0].length;
        int count = 0;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (grid[i][j] == 1) {
                    int cur = 4;
                    if (i + 1 < m && grid[i + 1][j] == 1) {
                        cur--;
                    }
                    if (i - 1 >= 0 && grid[i - 1][j] == 1) {
                        cur--;
                    }
                    if (j + 1 < n && grid[i][j + 1] == 1) {
                        cur--;
                    }
                    if (j - 1 >= 0 && grid[i][j - 1] == 1) {
                        cur--;
                    }
                    count += cur;
                }
            }
        }
        return count;
    }
}