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

    原题链接在这里:https://leetcode.com/problems/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:
    

    题解:

    When there is an island, we want to accumlate 4 to the res.

    But if there is shared board with left and top, we need to minus board count * 2 from res.

    Time Complexity: O(m*n), m = grid.length, n = grid[0].length.

    Space: O(1).

    AC Java:

     1 class Solution {
     2     public int islandPerimeter(int[][] grid) {
     3         if(grid == null || grid.length == 0 || grid[0].length == 0){
     4             return 0;
     5         }
     6         
     7         int m = grid.length;
     8         int n = grid[0].length;
     9         int res = 0;
    10         
    11         for(int i = 0; i<m; i++){
    12             for(int j = 0; j<n; j++){
    13                 if(grid[i][j] == 1){
    14                     int count = 0;
    15                     if(i > 0 && grid[i - 1][j] == 1){
    16                         count++;
    17                     }
    18                     
    19                     if(j > 0 && grid[i][j - 1] == 1){
    20                         count++;
    21                     }
    22                     
    23                     res = res + 4 - 2 * count;
    24                 }
    25             }
    26         }
    27         
    28         return res;
    29     }
    30 }

    类似Max Area of IslandColoring A Border.

  • 相关阅读:
    ThinkPHP3.2 整合支付宝RSA加密方式
    代码风格规范
    Mac下安装composer
    MAC 下安装RabbitMQ
    Redis配置
    git 分支
    PHP常用数组操作方法汇总
    php 不用第三个变量 交换两个变量的值汇总
    PHP配置错误信息回报的等级
    Apache同一个IP上配置多域名
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/6197102.html
Copyright © 2011-2022 走看看