岛屿周长c语言,岛屿的周长 --leetcode刷题,golang实现
给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。
网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。
岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。
示例 :
输入:
[[0,1,0,0],
[1,1,1,0],
[0,1,0,0],
[1,1,0,0]]
输出: 16
解释: 它的周长是下面图片中的 16 个黄色的边:
island.png
解题思路:
虽然耗时长,内存消耗大,但是是最容易想到的一种方式,遍历切片,如果当前位置是岛屿,总算加4,检查上下左右,如果有相邻岛屿,则总数 -1.
也可以简化为只检查右侧和下面,如果右边是岛屿,-2,如果下面是岛屿,-2,这样只用判断两个方向,而不需要判断四个方向了
代码如下:
func islandPerimeter(grid [][]int) int {
r, c := len(grid), len(grid[0])
sum := 0
for i, row := range grid {
for j, v := range row {
if v == 1 {
sum += 4
//下方同一列为陆地
if i + 1 < r && grid[i + 1][j] == 1 {
sum -= 2
}
//右侧相邻位置为陆地
if j + 1 < c && grid[i][j + 1] == 1 {
sum -= 2
}
}
}
}
return sum
}
有疑问加站长微信联系(非本文作者)
岛屿周长c语言,岛屿的周长 --leetcode刷题,golang实现相关推荐
- Leetcode刷题 463题:岛屿的周长(基于Java语言)
** Leetcode刷题 463题:岛屿的周长(基于Java语言) ** 一. 题目描述: 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相 ...
- Leetcode刷题第1题:两数之和(基于Java语言)
** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...
- Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言)
** Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言) ** 题目: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top( ...
- Leetcode刷题 232题:用栈实现队列(基于python3和c++两种语言)
Leetcode刷题 232题:用栈实现队列(基于python3和c++两种语言) 题目: 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部. pop() – 从队列首部移除元 ...
- Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)
** Leetcode刷题 155题: 最小栈(基于python3和c++两种语言) ** ** 题目: ** 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. ...
- Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言)
Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言) ** 题目: ** 给你一个目标数组 target 和一个整数 n.每次迭代,需要从 list = {1,2 ...
- LeetCode刷题——哈希表(python语言)
LeetCode刷题--哈希表(python语言) 一.哈希表 1.1 哈希表的概念 哈希表,也叫散列表.其实可以很像python的字典,也就是键(key)值(Hash(key))对,最简单也最常用的 ...
- leetcode刷题优质题解(C++,Python,Go语言)
最近开始为秋招准备,深感自己的编程能力基础弱,遂希望通过刷leetcode来提升数据结构和算法分析能力.过程中发现了几个优质题解,分享给大家,尤其是Carl哥的代码随想录包含C++.Java.Pyth ...
- c语言贪心算法合并箭,LeetCode刷题题库:贪心算法
LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...
- C#LeetCode刷题-哈希表
哈希表篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 42.8% 简单 3 无重复字符的最长子串 24.2% 中等 18 四数之和 ...
最新文章
- Apache Dubbo 3.0.0 正式发布 - 全面拥抱云原生
- oracle 查看监听命令_linux下使用Oracle常用命令
- Hadoop 系列之 Hive
- dedecms有缩略图则显示缩略图,没有则显示随机缩略图
- Kali linux 渗透测试(五)——渗透WPS攻击
- KVM: Guest CPU doesn’t match specification: missing features: hle,rtm 无法启动虚拟机,解决方法
- 天正cad计算机快捷键,天正CAD快捷键大全
- 活动预约报名小程序已优化点与待优化点
- css如何修改行内样式
- word下禁止显示回车符号
- [渝粤教育] 西南科技大学 交通管理与控制 在线考试复习资料2021版
- NVIDIA 驱动和CUDA下载官网地址
- 【前端】前端学习课程及内容概述
- css 一直图片适配所有手机背景图
- 银行业务--负债业务
- matlab——整数规划
- 【lstm预测】基于lstm实现时间序列数据预测matlab源码
- 脚本语言【JavaScript基础】JavaScript函数:声明+调用
- Java中如何保证线程安全性
- R语言double数据转成numeric类型