解答

class Solution {
public:
    int islandPerimeter(vector<vector<int>>& grid) {
        int num=0,edge=0;
        for(int i=0;i<grid.size();++i){
            for(int j=0;j<(*grid.begin()).size();++j){
                if(grid[i][j]==1){
                    ++num;
                    if(i+1!=grid.size()&&grid[i+1][j]==1)                ++edge;
                    if(j+1!=(*grid.begin()).size()&&grid[i][j+1]==1)     ++edge;
                }
            }
        }
        return 4*num-2*edge;
    }
};

笔记

这个题是我参考了解答之后才正确做对的

想到的:

  1. 岛的周长=4ב1’的个数-2×相邻边数
    其中‘1’的个数很容易求得,但问题关键在于边数

求相邻边数:

因为相邻边的俩个节点是相互的,比如A结点在B结点左边,有一条相邻边,那么B结点就在A结点右边。所以左右相邻只需要确定一个方向就好了

因此我们只需判断一个结点的右侧和下侧结点是不是与它相邻就好了。如果相邻,这说明也是‘1’

若当前结点在最右列或最下行时就不需要在找其右侧和下侧的结点,所以要加上判断条件是否是最右列或最下行

463. Island Perimeter (5月29日)的更多相关文章

  1. 【hihoCoder】1148:2月29日

    问题:http://hihocoder.com/problemset/problem/1148 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 思路: 1. 将问题转换成求两个日 ...

  2. 2016年12月29日 星期四 --出埃及记 Exodus 21:24

    2016年12月29日 星期四 --出埃及记 Exodus 21:24 eye for eye, tooth for tooth, hand for hand, foot for foot,以眼还眼, ...

  3. 2016年11月29日 星期二 --出埃及记 Exodus 20:20

    2016年11月29日 星期二 --出埃及记 Exodus 20:20 Moses said to the people, "Do not be afraid. God has come t ...

  4. 2016年10月29日 星期六 --出埃及记 Exodus 19:14

    2016年10月29日 星期六 --出埃及记 Exodus 19:14 After Moses had gone down the mountain to the people, he consecr ...

  5. 2016年6月29日 星期三 --出埃及记 Exodus 14:26

    2016年6月29日 星期三 --出埃及记 Exodus 14:26 Then the LORD said to Moses, "Stretch out your hand over the ...

  6. [MySQL]--&gt;查询5天之内过生日的同事中的闰年2月29日问题的解决过程

    前言: 上次写了查询5天之内过生日的同事中的跨年问题的解决过程,网址为:http://blog.csdn.net/mchdba/article/details/38952033 ,当中漏了一个闰年2月 ...

  7. SQL点滴6—“微软不认识闰年2月29日”&字符"N"的作用

    原文:SQL点滴6-"微软不认识闰年2月29日"&字符"N"的作用 http://www.cnbeta.com/articles/50580.htm这个 ...

  8. Hihocoder 2月29日

      时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年份为闰年 ...

  9. MSDN i TELL YOU 又更新了,win10 1809版本的 3月29日的

    MSDN i TELL YOU 又更新了,1809版本的 3月29日的 WINDOWS 10 现在只有64位的 很好,估计 64位的普及了. 是一大改变

  10. 西安OpenParty11月29日活动高清图文回顾——新增西安APEC蓝美图!

    本次活动由西安OpenParty负责线下活动组织运营,线上由InfoQ-QClub.OSChina协办. OSChina活动召集帖:运维为王——应用系统.DevOps与Docker(11月29日) I ...

随机推荐

  1. 转:hive-列转行和行转列

    1. 假设我们在hive中有两张表,其中一张表是存用户基本信息,另一张表是存用户的地址信息等,表数据假设如下: user_basic_info: id name 1 a 2 b 3 c 4 d use ...

  2. SQL Server ->> 无法将数据库从SINGLE_USER模式切换回MULTI_USER模式(Error 5064)

    报错信息如下: Msg 5064, Level 16, State 1, Line 1Changes to the state or options of database 'test' cannot ...

  3. redis3.2.8安装与简介

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的 ...

  4. 如何让LoadRunner实现多个场景运行?

    如何让LoadRunner实现多个场景运行? 发布时间: 2013-11-29 10:59    作者: stevenlee    来源: 51Testing软件测试网博客 字体:  小  中  大  ...

  5. php安装扩展redis淌过的坑

    php安装扩展redis淌过的坑 php扩展 redis cd /usr/local/src/ wget https://github.com/nicolasff/phpredis/archive/2 ...

  6. 【设计模式最终总结】桥接模式 VS 外观模式

    差异点 外观模式,是把功能通过一个接口提供出来,方便日后更换实现,或者这种实现可以由多方提供,但同时只用一个.典型例子:@Slf4j 桥接模式,多个维度,每个维度提供一个接口,这些接口集中在一个类中, ...

  7. 如何使用Flashfxp上传下载文件

    一.首先您本地电脑需要安装flashfxp软件,您可以通过百度搜索下载. 二.我们打开flashfxp,然后在右上角点击“会话”,再点击“快速连接”,如下图. 三.弹出“如下图”窗口.请输入FTP连接 ...

  8. Timer类注意事项

    Java的一个Timer对象可以执行多个Timertask任务,但是一个Timer对象本身只有一个线程,如果向他提交多个task,并且某个task相当耗时的话,其他的task即使到了执行时间,仍然会等 ...

  9. [转] Java 命名规范

    定义规范的目的是为了使项目的代码样式统一,使程序有良好的可读性. 包的命名  (全部小写,由域名定义) Java包的名字都是由小写单词组成.但是由于Java面向对象编程的特性,每一名Java程序员都 ...

  10. linux 里的`反引号

    Shell中可以将数字或字符直接赋予变量,也可以将Linux命令的执行结果赋予变量,如下: (1) $ count=9           #将数字赋予变量count (2) $ name=" ...