463. Island Perimeter

作者: DrunkPian0 | 来源:发表于2017-06-12 09:29 被阅读2次

    这题飞机上写的。边界条件蛮多的,以为会错但竟然一次AC了。
    如果我不知道这是一道easy题,应该就想不出来了。。

        public int islandPerimeter(int[][] grid) {
            int res = 0;
            for (int row = 0; row < grid.length; row++)
                for (int col = 0; col < grid[0].length; col++) {
                    if (grid[row][col] == 1) {
                        res += calc(row, col, grid);
                    }
                }
            return res;
        }
    
        private int calc(int row, int col, int[][] matrix) {
            int count = 0;
            if (row == 0 || row > 0 && matrix[row - 1][col] == 0) {
                count++;
            }
            if (col == 0 || col > 0 && matrix[row][col - 1] == 0) {
                count++;
            }
            if (row == matrix.length - 1 || row < matrix.length - 1 && matrix[row + 1][col] == 0) {
                count++;
            }
            if (col == matrix[0].length - 1 || col < matrix[0].length - 1 && matrix[row][col + 1] == 0) {
                count++;
            }
            return count;
        }
    

    另外看到一种计算right neighbor 和 down neighhor最后统一处理的方法:
    https://discuss.leetcode.com/topic/68786/clear-and-easy-java-solution

    相关文章

      网友评论

        本文标题:463. Island Perimeter

        本文链接:https://www.haomeiwen.com/subject/nqkkqxtx.html