463. Island Perimeter (5月29日)

解答

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’

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

原文地址:https://www.cnblogs.com/cs-niaocai/p/9108718.html

时间: 2024-08-27 21:07:22

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

Oyk的ACM刷题记录(始于2015年2月29日,可能含剧透)

Online Judge 题目序号/题目 简单大意/题解 犯2情况 2月29日 SPOJ GSS1  不带更新区间最大子段和. 线段树维护 区间从左/右开始的最大值.区间最大值.区间和. 1.输出忘了换行. 2.打错了一个字母. SPOJ GSS2 区间不重复最大子段和. 离线维护s[i..now],线段树维护 区间历史最大值.区间历史最大更新值.区间现在最大值.区间现在更新值. 询问输出区间历史最大值. 1.线段树询问忘记写pushdown了. SPOJ TEST 输出所有42前的数. 1.不

2月29日(编程之美2015资格赛)

时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年份为闰年: 1. 年份能被4整除但不能被100整除 2. 年份能被400整除 输入 第一行为一个整数T,表示数据组数. 之后每组数据包含两行.每一行格式为"month day, year",表示一个日期.month为{"January", "February",

计算两日期间2月29日总数的Java程序

事先声明,本人仅仅是个计算机领域的新手,不久前开始学习Java.后来我接到了一份关于计算两日期间2月29日总数的编程作业,仓促之中我便写下了这个程序.由于之前可以说毫无编程经验,Java也仅仅是只学了一小部分.所以目前该程序尚未解决输入问题. 我解决这个问题的思路是: 编写一个方法(leapYear)用于判断某一年份是否为闰年: 编写另一个方法(dateExist)用于判断某一时期是否真实存在,在这方法中会引用到上个方法: 最后编写main方法,引用方法(dateExist)分别判断起始日期和终

实训第1天(12月29日)

一.目标 大家自选主题(建议毕业设计题目)进行系统开发和测试,并完成相关文档. 最终提交:(1)系统源代码:(2)实训报告:需求分析+系统设计+系统实现+系统测试. 二.进度安排 1.12月29日(周一),3-8节 完成需求分析和系统设计的文档,及相关代码. 2.12月31日(周三),1-7节 完成系统模板和首页的设计,以及实现一个功能模块. 3.1月4日(周日),1-8节 完成主要功能模块,更新完善文档. 4.1月5日(周一),1-10节 完成主要功能模块,更新完善文档. 5.1月6日(周二)

hihoCoder 1148 2月29日

时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年份为闰年: 1. 年份能被4整除但不能被100整除 2. 年份能被400整除 输入 第一行为一个整数T,表示数据组数. 之后每组数据包含两行.每一行格式为"month day, year",表示一个日期.month为{"January", "February",

软考信息系统监理师:2016年4月29日作业

软考信息系统监理师:2016年4月29日作业一.信息应用系统分析设计阶段监理1.需求分析的进入条件是什么?(记)2.需求分析的目标是什么?3.需求分析阶段的成果有哪些?(记)4.软件概要设计阶段的进入条件是什么?(记,并理解:加不加概要2字,答案均相同)5.软件详细设计阶段的进入条件是什么?6.描述算法除了流程图外,还有一些别的工具,如哪3种?7.软件设计阶段的成果是什么?(记)8.软件工程化要求以软件质量保证为核心,紧紧抓住哪8个主要环节?二.信息应用系统实施阶段监理1.编码阶段进入条件是什么

【System Log】7月14日—7月29日

本日志由系统自动生成. 从7月14日起便按照心想事成的节奏进入了实验室.打酱油.周末又去学活值班,生活的框架还是很不错的. 1.基于Hadoop的Flume,zooKeeper,这些东西算是明白了个大概. 2.第一周大概学习了javascript.jquery.css.ci框架(php)这些基本的东西,然后大概搭了个大创网站的架子出来. 3.第二周周末开始写android,答应别人要开发的一个小游戏,但是写着写着就觉得压力大写不出来. 4.中间还抽时间看了程杰的大话设计模式,和一些人ctf的wr

2月29日

我自己写的代码测试论坛上的数据都通过的,但是就是通不过OJ,应该是超时,给大家提供一种思路吧. 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年份为闰年: 年份能被4整除但不能被100整除 年份能被400整除 输入 第一行为一个整数T,表示数据组数. 之后每组数据包含两行.每一行格式为"month day, year",表示一个日期.month为{

2016年04月29日【EPM-易通元】最新价位公布

2016年04月29日[EPM-易通元]最新价位公布   涨了.涨了.又涨了!   我们的「EPM易通元」天天见涨!太给力了!!   2016.04.29日今天已涨0,01美金,目前已到0.35美金啦!   如果你有1000个易通元,你今天就收益10美金   如果你有10000个易通元,今天就收益100美金   如果你有100000个易通元,你今天就收益1000美金.   恭喜买到「EPM易通元」的朋友们,买到即是赚到!   买入210美金到3500美金 :1美金:6.3人民币兑换,举例买入35

20.5 语音合成(百度2016年2月29日发布的tts引擎)

分类:C#.Android.VS2015: 创建日期:2016-03-17 一.简介 编写手机App时,有时需要使用文字转语音(Text to Speech)的功能,比如开车时阅读收到的短信.导航语音提示.界面中比较重要的信息通过语音强调.--等. 由于Android自带的Pico TTS并不支持中文,所以要既能阅读中文文本,还能阅读英文文本,必须下载第三方提供的能说中文的语音包. 二.申请百度tts授权 本节以百度2016年2月29日发布的"离在线融合语音合成SDK_Android 2.2.3