zoukankan      html  css  js  c++  java
  • Leetcode: Island Perimeter

    You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one island (i.e., one or more connected land cells). The island doesn't have "lakes" (water inside that isn't connected to the water around the island). One cell is a square with side length 1. The grid is rectangular, width and height don't exceed 100. Determine the perimeter of the island.
    
    Example:
    
    [[0,1,0,0],
     [1,1,1,0],
     [0,1,0,0],
     [1,1,0,0]]
    Answer:
    16 Explanation: The perimeter is the 16 yellow stripes in the image below:
    1. descriptions of this problem implies there may be an "pattern" in calculating the perimeter of the islands.
    2. and the pattern is islands * 4 - neighbours * 2, since every adjacent islands made two sides disappeared(as picture below).
    3. the next problem is: how to find the neighbours without missing or recounting? 
    +--+     +--+                   +--+--+
    |  |  +  |  |          ->       |     |
    +--+     +--+                   +--+--+
     1 public static int islandPerimeter(int[][] grid) {
     2         if (grid == null || grid.length == 0 || grid[0].length == 0) return 0;
     3         int result = 0;
     4         for (int i = 0; i < grid.length; i++) {
     5             for (int j = 0; j < grid[0].length; j++) {
     6                 if (grid[i][j] == 1) {
     7                     result += 4;
     8                     if (i > 0 && grid[i-1][j] == 1) result -= 2;
     9                     if (j > 0 && grid[i][j-1] == 1) result -= 2;
    10                 }
    11             }
    12         }
    13         return result;
    14     }
  • 相关阅读:
    python3监控网站状态
    暴力屏蔽80访问失败的用户
    python3爬取中国药学科学数据
    python3发邮件脚本
    OOP AOP
    lambda
    jni
    Gradle史上最详细解析
    supersocket 遇到的Failed to initialize 和 log4net用法
    在c#中利用keep-alive处理socket网络异常断开的方法
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/6168479.html
Copyright © 2011-2022 走看看