当前位置: 首页 > news >正文

专门做酒店网站网址没封的来一个

专门做酒店网站,网址没封的来一个,新东方考研班收费价格表,深圳有什么互联网公司200. 岛屿问题 难度#xff1a;中等 力扣地址#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 问题描述 给你一个由 1#xff08;陆地#xff09;和 0#xff08;水#xff09;组成的的二维网格#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围中等 力扣地址https://leetcode.cn/studyplan/top-100-liked/ 问题描述 给你一个由 1陆地和 0水组成的的二维网格请你计算网格中岛屿的数量。 岛屿总是被水包围并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外你可以假设该网格的四条边均被水包围。 示例 1 输入grid [ [“1”,“1”,“1”,“1”,“0”], [“1”,“1”,“0”,“1”,“0”], [“1”,“1”,“0”,“0”,“0”], [“0”,“0”,“0”,“0”,“0”] ] 输出1 示例 2 输入grid [ [“1”,“1”,“0”,“0”,“0”], [“1”,“1”,“0”,“0”,“0”], [“0”,“0”,“1”,“0”,“0”], [“0”,“0”,“0”,“1”,“1”] ] 输出3 提示 m grid.lengthn grid[i].length1 m, n 300grid[i][j] 的值为 0 或 1 问题分析 有没有小伙伴跟我一样这类题目一看就想尝试一下深度优先遍历 DFS DFS 写起来比较简单也比较容易理解所以真心推荐合适场景下考虑 DFS。 如下图所示白色筷子表示 “水”也就是遍历时的边界。 所以接下的问题就非常简单我们从 (0, 0) 这个坐标出发如果是陆地就 travel也就是 DFS 遍历如果是水就修改方向如果没有地方去了就切换到下一个陆地。 为了更好理解我们可以考虑把经过的陆地全部都换成水避免下次还来这个地方 解题代码 对应的 C 代码如下 class Solution { public:void travel(vectorvectorchar grid, int x, int y) {// 遇到边界或没有可访问的点if (x grid.size() || x 0 || y grid[0].size() || y 0 || grid[x][y] 0) {return;}// 标记一下已经访问grid[x][y] 0;// 四个方向 traveltravel(grid, x 1, y);travel(grid, x - 1, y);travel(grid, x, y 1);travel(grid, x, y - 1);}int numIslands(vectorvectorchar grid) {// 记录结果int result 0;// 根据 (i, j) 开始尝试 travelfor (int i 0; i grid.size(); i) {for (int j 0; j grid[0].size(); j) {// 如果遇到的这个点是陆地if (grid[i][j] 1) {// 开始traveltravel(grid, i, j);// travel 结束后 1表示那一片陆地已经访问过了result 1;}}}return result;} };时间复杂度O(MN)空间复杂度O(MN 对应的 java 代码如下 class Solution {// 定义 travel 方法public void travel(char[][] grid, int x, int y) {// 遇到边界或没有可访问的点if (x grid.length || x 0 || y grid[0].length || y 0 || grid[x][y] 0) {return;}// 标记已经访问过的点grid[x][y] 0;// 四个方向进行递归调用travel(grid, x 1, y);travel(grid, x - 1, y);travel(grid, x, y 1);travel(grid, x, y - 1);}// 定义 numIslands 方法public int numIslands(char[][] grid) {// 记录结果int result 0;// 遍历整个网格for (int i 0; i grid.length; i) {for (int j 0; j grid[0].length; j) {// 如果遇到陆地if (grid[i][j] 1) {// 开始进行递归访问travel(grid, i, j);// 访问结束后计数加一result;}}}// 返回结果return result;} } 对应的python代码为 class Solution:def travel(self, grid, x, y):# 遇到边界或没有可访问的点if x len(grid) or x 0 or y len(grid[0]) or y 0 or grid[x][y] 0:return# 标记已经访问过的点grid[x][y] 0# 四个方向进行递归调用self.travel(grid, x 1, y)self.travel(grid, x - 1, y)self.travel(grid, x, y 1)self.travel(grid, x, y - 1)def numIslands(self, grid):# 记录结果result 0# 遍历整个网格for i in range(len(grid)):for j in range(len(grid[0])):# 如果遇到陆地if grid[i][j] 1:# 开始进行递归访问self.travel(grid, i, j)# 访问结束后计数加一result 1# 返回结果return result总结 作为 DFS 的一个比较简单的例子限制条件也比较少只需要考虑边界问题即可。先应该学习一下 DFS 的基本逻辑然后能够写 DFS 的代码在此基础上稍微改改就可以刷这道题。 我更加想称这个操作为防水游戏就是把每块岛屿都用海水淹没看看需要操作多少次。 多谢小伙伴们的点赞支持 ~ Smileyan 2024.06.30 23:52
http://www.hkea.cn/news/14471612/

相关文章:

  • 旅游网站开发与建设论文在线免费网站建设平台
  • 官方网站建设网站中国建设教育协会的是假网站吗
  • 网站建设与管理试题及答案个性化网站
  • 厦门网站搜索引擎优化电商专业培训网站建设
  • 沈阳智能模板建站91大神网站建设
  • 我的世界做图片网站威海微网站建设
  • 网站字体大小展馆设计师招聘
  • 个人备案网站经营西安微信商城网站开发
  • 网站服务器指的是什么手表网站欧米茄官方
  • 网站跳出率高的原因网站 内容 营销
  • 可以自学做网站吗网页设计ppt演讲
  • 珠海房地产网站建设墟沟企业建站价格表
  • 网站开发策划书宁波网站关键词优化代码
  • 介绍学校网站怎么做wordpress 下载文件插件
  • 彩票网站开发软件网站开发公司需要那些硬件设备
  • 网站做优化有什么用吗云主机建设网站
  • 家具flash网站模板下载怎么做刷业网站
  • 做网站不会写代码网络舆情监测系统软件
  • 做风投要关注哪些网站有没有做美食的规模网站
  • 成都网站建设哪家专业而且比较便宜网站需求建设关系书
  • 网站建设倒计时自建网站怎么关闭
  • 福清市住房和城乡建设局网站wordpress文章乱码
  • asp网站模板中国互联网协会副会长名单
  • 虚拟主机对网站seo有哪些影响最好的wordpress教程
  • 网站设计的国际专业流程网站买源代码
  • 网站开发的在线支付功能wordpress sql脚本
  • 淮安网站制作设计外链屏蔽逐步解除
  • 建网站哪便宜深圳外贸公司联系电话
  • 查询行业信息的网站济南建设工程交易中心
  • 怎么给自己的网站做seo福州微信网站制作