LeetCode 第463题:岛屿的周长

2020-08-09  本文已影响0人  放开那个BUG

1、前言

题目描述

2、思路

思路

主要是这个图,找到有长度的地方,为越界处或者是0处。

3、代码

class Solution {
    public int islandPerimeter(int[][] grid) {
        int M = grid.length;
        int N = grid[0].length;
        for(int i = 0; i < M; i++){
            for(int j = 0; j < N; j++){
                // 只有一个岛屿
                if(grid[i][j] == 1){
                    return dfs(grid, i, j);
                }
            }
        }

        return 0;
    }

    private int dfs(int[][] grid, int i, int j){
        if(i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] == 0){
            return 1;
        }
        if(grid[i][j] == 2){
            return 0;
        }

        grid[i][j] = 2;
        return dfs(grid, i + 1, j) + dfs(grid, i - 1, j) 
        + dfs(grid, i, j + 1) + dfs(grid, i, j - 1);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读