zoukankan      html  css  js  c++  java
  • 463. Island Perimeter

    链接

    463. Island Perimeter

    题意

    给定一个二维数组,模拟海和岛。其中0表示海域,1表示岛屿(全部相连)。求这块岛屿的周长。
    已知条件:

    1. 每一个小格子边长为1
    2. 岛屿中没有内陆湖,说形象点就是岛屿是“实心”的
    3. 数组一维和二维的长度相等(即正方形)
    4. 长宽不超过100
    5. 数组外全是海域

    思路

    遍历数组,遇到海域则跳过,遇到陆地则根据它的上下左右判断是否有海岸。

    代码

    Java:

    public class Solution {
         public static int islandPerimeter(int[][] grid) {
            int ans = 0;
            for (int i = 0; i < grid.length; i++) {
                for (int j = 0; j < grid[i].length; j++) {
                    // 遇到海跳过
                    if (grid[i][j] == 0) continue;
                    // 陆地,统计四个方向
                    // 上,如果是第一行则直接加1,其他方向类似
                    if (i == 0 || grid[i - 1][j] == 0) ans++;
                    // 下
                    if (i == grid.length - 1 || grid[i + 1][j] == 0) ans++;
                    // 左
                    if (j == 0 || grid[i][j - 1] == 0) ans++;
                    // 右
                    if (j == grid[i].length - 1 || grid[i][j + 1] == 0) ans++;
                }
            }
            return ans;
        }
    }
    

    效率

    Your runtime beats 33.53% of java submissions.

  • 相关阅读:
    Interrupt、Interrupted、IsInterrupted
    ReentrantLock
    tcp粘包、拆包
    jstat 分析应用垃圾回收状况
    CopyOnWriteArrayList
    storm基础概念
    余弦距离
    websocket
    awk
    sed
  • 原文地址:https://www.cnblogs.com/zyoung/p/6566589.html
Copyright © 2011-2022 走看看