【LeetCode】Island Perimeter 解题报告


[LeetCode]

https://leetcode.com/problems/island-perimeter/

  • Total Accepted: 16143
  • Total Submissions: 28552
  • Difficulty: Easy

Question

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:

Ways

有点类似小学火柴棍的问题。我最初的想法是统计一的个数,找规律,试验了几次之后发现貌似是1的个数*2+2,但是这个是错误的。比如最角落的1如果被周围的1所包围的话,实际上是不贡献边的。

后来想到,应该把边角的被包围的1去掉,中间的被四个1包围的1也给去掉,剩余的1的个数*4.这样很麻烦,因为判断处于边角位置的1就要写4个If,判断被包围的1也要判断四次。

看到top的答案我才明白,可以统计1的个数*4 再减去 与其有交集的1的个数*2.为了防止减去的边不被重复计算,所以,只判断右边和下边的1.代码如下。

public class Solution {
public int islandPerimeter(int[][] grid) {
int count=0;
int neighbours=0;
for(int i=0; i<grid.length; i++){
for(int j=0 ;j<grid[i].length; j++){
if(grid[i][j]==1){
count++;// count islands
if(j<grid[i].length-1 && grid[i][j+1]==1)
neighbours++;// count right neighbours
if(i<grid.length-1 && grid[i+1][j]==1)
neighbours++;// count down neighbours
}
}
}
return 4*count-2*neighbours;
}
}

果然这种方法判断的次数要少一点。

Date

2017 年 1 月 6 日

【LeetCode】Island Perimeter 解题报告的更多相关文章

  1. 【LeetCode】463. Island Perimeter 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 减去相交部分 参考资料 日期 题目地址:https: ...

  2. LeetCode 463 Island Perimeter 解题报告

    题目要求 You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 rep ...

  3. LeetCode: Combination Sum 解题报告

    Combination Sum Combination Sum Total Accepted: 25850 Total Submissions: 96391 My Submissions Questi ...

  4. 【LeetCode】Permutations 解题报告

    全排列问题.经常使用的排列生成算法有序数法.字典序法.换位法(Johnson(Johnson-Trotter).轮转法以及Shift cursor cursor* (Gao & Wang)法. ...

  5. LeetCode - Course Schedule 解题报告

    以前从来没有写过解题报告,只是看到大肥羊河delta写过不少.最近想把写博客的节奏给带起来,所以就挑一个比较容易的题目练练手. 原题链接 https://leetcode.com/problems/c ...

  6. LeetCode: Sort Colors 解题报告

    Sort ColorsGiven an array with n objects colored red, white or blue, sort them so that objects of th ...

  7. [LeetCode] Island Perimeter 岛屿周长

    You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...

  8. LeetCode Island Perimeter

    原题链接在这里:https://leetcode.com/problems/island-perimeter/ 题目: You are given a map in form of a two-dim ...

  9. LeetCode: Permutation Sequence 解题报告

    Permutation Sequence https://oj.leetcode.com/problems/permutation-sequence/ The set [1,2,3,…,n] cont ...

随机推荐

  1. python17进程

    import os import time from multiprocessing.dummy import Process def so_sth(name): print("进程名称{} ...

  2. 给lua_close实现回调函数

    先讲下为什么会需要lua_close回调吧. 我用C++给lua写过不少库,其中有一些,是C++依赖堆内存,并且是每一个lua对象使用一块单独的内存来使用的. 在之前,我一直都是魔改lua源代码,给l ...

  3. 多选项、多个选择项【c#】

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="AddDataInfoCe ...

  4. college-ruled notebook

    TBBT.s3.e10: Sheldon: Where's your notebook?Penny: Um, I don't have one.Sheldon: How are you going t ...

  5. 12. Fedora 中文乱码问题

    1. Rhythmbox(音乐播放器乱码) yum install python-mutagen mid3iconv -e GBK *.mp3 2. totem电影播放机播放列表乱码解决1).修改to ...

  6. CentOS7 搭建maven私服Nexus

    下载解压 官网https://www.sonatype.com/download-oss-sonatype 下载页面 https://help.sonatype.com/repomanager2/do ...

  7. Android数据存取

    Android数据存取 一.SharedPreferencesc存取数据 SharedPreferences是使用键值对的方式来存储数据的,也就是在保存一条数据时,需要给这条数据提供一个对应的键,这样 ...

  8. maven根据profile,resources,filters来区分部署环境

    项目过程中,在不同的阶段,分别需要部署开发环境,测试环境,线上环境.如果都用一套配置文件,很容易弄乱,所以维持多套配置文件很有必要. maven提供了一组属性以供开发人员灵活搭配,可以根据环境来打包, ...

  9. springboot 设置项目路劲后不能访问首页

    环境背景 学习版本 : springboot2.31 controller  代码 @controller public class Iindex{ @RequestMapping("/&q ...

  10. Pagination.js + Sqlite web系统分页

    前端使用 jquery pagination.js 插件. 环境准备:jquery.js.pagination.js.pagination.css 附件下载:https://files.cnblogs ...