Island Perimeter(#463)

编号 名称 等级
463 Island Perimeter Easy

思路

思考了很久无解😥,看了一下大神的解题,不得不说很巧妙。

首先遍历地图,如果这个方格是选中的,那么边数加 4 。然后分别看该方块的上和左是否被选中或者越界。如果是那么在原来的情况下减 2 。这个推算一下就知道了。 只能说这个规律找的很巧妙。

代码

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