Swif算法学习-岛屿周长问题
岛屿周长问题
一 问题描述
给定一个包含 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算法学习-岛屿周长问题相关推荐
- 令人拍案叫绝的算法学习网站新手算法入门到精通,算法面试冲刺资料这里都有
(9月已更)学算法认准这6个网站就够了! 写在前面:作为ACM铜牌选手,从FB到腾讯,从事算法&java岗位工作也是5年有余.在工作中接触到了很多同学,在算法学习和算法面试这件事上我还是很有发 ...
- python机器学习(一)算法学习的步骤、机器学习的应用及流程(获取数据、特征工程、模型、模型评估)
机器学习入门 机器学习中需要理论性的知识,如数学知识为微积分(求导过程,线性回归的梯度下降法),线性代数(多元线性回归,高纬度的数据,矩阵等),概率论(贝叶斯算法),统计学(贯穿整个学习过程),算法根 ...
- 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)
数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...
- 令人拍案叫绝的算法学习网站,算法入门到精通,算法面试冲刺资料这里都有
前言 作为ACM铜牌选手,从FB到腾讯,从事算法&java岗位工作也是5年有余.在工作中接触到了很多同学,在算法学习和算法面试这件事上我还是很有发言权的. 今天就跟想学算法的同学分享一下我私藏 ...
- 拿下斯坦福和剑桥双offer,00后的算法学习之路
董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...
- 好久没有看到这么有建设性德文章,由衷地赞叹《知其所以然地学习(以算法学习为例)》-By 刘未鹏(pongba)
知其所以然地学习(以算法学习为例) By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) Updated(2008-7-24):更新见正文部分,有标注 ...
- 原创 | 初学者友好!最全算法学习资源汇总(附链接)
在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...
- 基本算法学习(一)之希尔排序(JS)
参考书: 严蔚敏-数据结构 希尔排序(Shell's Sort) 希尔排序又称"缩小增量排序",归属于插入排序一类,简单来说,和我们的插入排序比,它更快. 奇妙的记忆点: 内排序( ...
- 大顶堆删除最大值_算法学习笔记(47): 二叉堆
堆(Heap)是一类数据结构,它们拥有树状结构,且能够保证父节点比子节点大(或小).当根节点保存堆中最大值时,称为大根堆:反之,则称为小根堆. 二叉堆(Binary Heap)是最简单.常用的堆,是一 ...
最新文章
- 学习web前端你必须要了解的主流框架!
- printf格式化字符串用法
- 快速排序(C++版)
- [kubernetes] 证书详细总结
- Ubuntu 18.04 LTS环境下 MNN 的编译与使用
- 在Kafka中发布订阅模型
- 判断浏览器版本语句大全
- uvicorn 更改fastapi 运行host和port
- 25.QWidget用法
- VB为MSHFlexGrid添加表格编辑功能
- Lua的协程和协程库详解
- 11.5 走出来的就业路——《逆袭大学》连载
- Linux如何查看端口
- 2021-2027全球与中国微机械角速率传感器市场现状及未来发展趋势
- python电子表格类_python合并同类型excel表格的方法
- Google adsense单价降低的原因-失误的无效点击过滤
- 3d模型导入MAYA常见错误!
- elasticsearch安装采坑记录
- nbu Linux 邮件告警,Netbackup配置邮件警报
- 学校计算机申请报告,【体育器材申请报告】_学校体育器材申请报告格式及范文...
热门文章
- 2020年中级银行从业资格报考注意事项
- 如何用Camtasia添加视频水印?
- ORA-00257 archiver error 解决方案
- 小程序video自定义播放按钮
- 8.3.2018 1 Quick and dirty 快而脏的快餐
- ios 安全区域问题
- 移动硬盘修复的有效方法,恢复移动硬盘的数据这么做!
- 计算机c语言提升培训机构,计算机培训班 | 顺应科技潮流,提升计算机技能
- “吃一堑,长一智,就已经是智者了” —— 2022.1.13日上午11点30分记
- AMQP 协议及 RabbitMQ 的 Java 用例