岛屿周长问题

一 问题描述

给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。

网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。

岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。
示例 :

[[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]

输出: 16

解释: 它的周长是下面图片中的 16 个黄色的边:


题目来源:力扣(LeetCode)
题目链接:https://leetcode-cn.com/problems/island-perimeter

二.解题思路
2.1 方法一 :排除加
思维逻辑
设定 最终结果为 sum,初始化 sum =0
循环遍历二维数组,判断二维数组中当前数值是否等于1,等于则执行,判断当前区域(数值)上、下、左、右是否为0或当前是否是边境值,满足两个中任意一个条件 sum+=1,返回sum即为结果。

swift 代码实现过程

func islandPerimeter(grid: [[Int]]) -> Int {var sum = 0for i in 0..<(grid.count)  {for j in 0..<(grid[i].count)  {if grid[i][j] == 1 {let top = i-1,bottom=i+1,left=j-1,right=j+1if top<0||grid[top][j] == 0 {sum+=1}if bottom>grid.count-1||grid[bottom][j] == 0 {sum+=1}if left<0||grid[i][left] == 0 {sum+=1}if right>grid[i].count-1||grid[i][right] == 0 {sum+=1}}}}return sum
}

2.1 方法二 和一减
思维逻辑
设定 最终结果为 sum,初始化 sum =0
循环遍历二维数组,判断二维数组中当前数值是否等于1,等于则执行sum+=4处理,并判断当前区域(数值)上、左是否为1以及当前是否是非边境值,同时满足两个条件 sum-=2,返回sum即为结果。

swift 代码实现过程

func islandPerimeter(_ grid: [[Int]]) -> Int {var sum = 0for i in 0..<(grid.count)  {for j in 0..<(grid[i].count)  {if grid[i][j] == 1 {let last_top = i-1,last_left=j-1sum += 4if i>0&&grid[last_top][j] == 1 {sum-=2}if j>0&&grid[i][last_left] == 1{sum-=2}}}}return sum}

Swif算法学习-岛屿周长问题相关推荐

  1. 令人拍案叫绝的算法学习网站新手算法入门到精通,算法面试冲刺资料这里都有

    (9月已更)学算法认准这6个网站就够了! 写在前面:作为ACM铜牌选手,从FB到腾讯,从事算法&java岗位工作也是5年有余.在工作中接触到了很多同学,在算法学习和算法面试这件事上我还是很有发 ...

  2. python机器学习(一)算法学习的步骤、机器学习的应用及流程(获取数据、特征工程、模型、模型评估)

    机器学习入门 机器学习中需要理论性的知识,如数学知识为微积分(求导过程,线性回归的梯度下降法),线性代数(多元线性回归,高纬度的数据,矩阵等),概率论(贝叶斯算法),统计学(贯穿整个学习过程),算法根 ...

  3. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

  4. 令人拍案叫绝的算法学习网站,算法入门到精通,算法面试冲刺资料这里都有

    前言 作为ACM铜牌选手,从FB到腾讯,从事算法&java岗位工作也是5年有余.在工作中接触到了很多同学,在算法学习和算法面试这件事上我还是很有发言权的. 今天就跟想学算法的同学分享一下我私藏 ...

  5. 拿下斯坦福和剑桥双offer,00后的算法学习之路

    董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...

  6. 好久没有看到这么有建设性德文章,由衷地赞叹《知其所以然地学习(以算法学习为例)》-By 刘未鹏(pongba)

    知其所以然地学习(以算法学习为例) By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) Updated(2008-7-24):更新见正文部分,有标注 ...

  7. 原创 | 初学者友好!最全算法学习资源汇总(附链接)

    在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...

  8. 基本算法学习(一)之希尔排序(JS)

    参考书: 严蔚敏-数据结构 希尔排序(Shell's Sort) 希尔排序又称"缩小增量排序",归属于插入排序一类,简单来说,和我们的插入排序比,它更快. 奇妙的记忆点: 内排序( ...

  9. 大顶堆删除最大值_算法学习笔记(47): 二叉堆

    堆(Heap)是一类数据结构,它们拥有树状结构,且能够保证父节点比子节点大(或小).当根节点保存堆中最大值时,称为大根堆:反之,则称为小根堆. 二叉堆(Binary Heap)是最简单.常用的堆,是一 ...

最新文章

  1. 学习web前端你必须要了解的主流框架!
  2. printf格式化字符串用法
  3. 快速排序(C++版)
  4. [kubernetes] 证书详细总结
  5. Ubuntu 18.04 LTS环境下 MNN 的编译与使用
  6. 在Kafka中发布订阅模型
  7. 判断浏览器版本语句大全
  8. uvicorn 更改fastapi 运行host和port
  9. 25.QWidget用法
  10. VB为MSHFlexGrid添加表格编辑功能
  11. Lua的协程和协程库详解
  12. 11.5 走出来的就业路——《逆袭大学》连载
  13. Linux如何查看端口
  14. 2021-2027全球与中国微机械角速率传感器市场现状及未来发展趋势
  15. python电子表格类_python合并同类型excel表格的方法
  16. Google adsense单价降低的原因-失误的无效点击过滤
  17. 3d模型导入MAYA常见错误!
  18. elasticsearch安装采坑记录
  19. nbu Linux 邮件告警,Netbackup配置邮件警报
  20. 学校计算机申请报告,【体育器材申请报告】_学校体育器材申请报告格式及范文...

热门文章

  1. 2020年中级银行从业资格报考注意事项
  2. 如何用Camtasia添加视频水印?
  3. ORA-00257 archiver error 解决方案
  4. 小程序video自定义播放按钮
  5. 8.3.2018 1 Quick and dirty 快而脏的快餐
  6. ios 安全区域问题
  7. 移动硬盘修复的有效方法,恢复移动硬盘的数据这么做!
  8. 计算机c语言提升培训机构,计算机培训班 | 顺应科技潮流,提升计算机技能
  9. “吃一堑,长一智,就已经是智者了” —— 2022.1.13日上午11点30分记
  10. AMQP 协议及 RabbitMQ 的 Java 用例