首页 > 其他分享 >Golang刷题日志--岛屿问题

Golang刷题日志--岛屿问题

时间:2023-05-10 22:35:11浏览次数:39  
标签:-- 岛屿 DFS Golang grid len var byte 刷题

1.给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。

示例代码:

import "fmt"

func numIsIands(grid [][]byte) int {
	//记录岛屿数量
	var count int
	for i := 0; i < len(grid); i++ {
		for j := 0; j < len(grid[0]); j++ {
			if grid[i][j] == '1' {
				DFS(grid, i, j)
				count++
			}
		}

	}
	return count
}

// 找到岛屿边界,避免重复标记
func DFS(grid [][]byte, r, c int) {
	if r < 0 || c >= len(grid[0]) || r >= len(grid) || c < 0 || grid[r][c] != '1' {
		return
	}
	grid[r][c] = '2'
	DFS(grid, r-1, c)
	DFS(grid, r+1, c)
	DFS(grid, r, c-1)
	DFS(grid, r, c+1)
}

func main() {
	var grid = [][]byte{
		{'1', '1', '0', '0', '0'},
		{'1', '1', '0', '0', '0'},
		{'0', '0', '1', '0', '0'},
		{'0', '0', '0', '1', '1'},
	}
	var grid1 = [][]byte{
		{'1', '1', '1', '1', '0'},
		{'1', '1', '0', '1', '0'},
		{'1', '1', '0', '0', '0'},
		{'0', '0', '0', '0', '0'},
	}

	fmt.Println("岛屿数量:", numIsIands(grid))
	fmt.Println("岛屿数量:", numIsIands(grid1))
}

 

标签:--,岛屿,DFS,Golang,grid,len,var,byte,刷题
From: https://www.cnblogs.com/99kol/p/17389528.html

相关文章

  • 5.10日结
    最近真是颓废的不成样子,大伙总以为我学了很多,但实际上什么也没有学到,还真就那句话,要么一直学提升自己,要不然就摆,夹在中间就很脑瘫。其次我今天复习了数据库4和5单元和概率论1和2单元,还有我那蹩脚的四级。这个四级就和英语提高一起复习了。。其次我们的二阶段是开发一个社区,目前......
  • 在Linux 系统中如何复制当前目录和子目录中的 .jpg 文件到当前位置
    在Linux系统中,你可以使用find命令来查找当前目录和子目录中的.mp4和.jpg文件,然后使用cp命令将它们复制到当前位置。下面是一个示例命令:find.-typef\(-name"*.mp4"-o-name"*.jpg"\)-execcp{}.\;这个命令使用了find命令来查找文件。find.表示在当前......
  • 2023-05-10:给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表 如果在二叉
    2023-05-10:给你一棵以root为根的二叉树和一个head为第一个节点的链表如果在二叉树中,存在一条一直向下的路径且每个点的数值恰好一一对应以head为首的链表中每个节点的值,那么请你返回True否则返回False。一直向下的路径的意思是:从树中某个节点开始,一直连续向下的路径......
  • 初识指针
    指针:就是地址,是由解引用操作符来找到所想要的对象,指针变量:是用来存放别人的地址的内存是怎么编号的?一般计算机是32位或者64位,例:32位的计算机是有32根地址线而地址是物理线是可以通电的,正电就是1,负电就是0,而这些线全部通电有些电是正的有些是负的,而这些电就会产生电信号,电信号......
  • 【大数据】Hive 小文件治理和 HDFS 数据平衡讲解
    目录一、Hive小文件概述二、Hive小文件产生的背景三、环境准备四、Hive小文件治理1)小文件合并(常用)1、示例演示一(非分区表)2、示例演示二(分区表)3、示例演示三(临时表)2)文件压缩3)存储格式优化4)分区表5)垃圾回收五、HDFS数据平衡1)HDFS数据倾斜2)HDFS数据平衡一、Hive小文件概述......
  • 有界树宽 / 树分解
    如果不知道题目中的图是不是什么特殊图的话,这些东西在OI中就一点用都没有。构造树分解题(树宽=3)如果知道树分解,就可以转成在树上求任意两点之间的最短路。JOISC2017RailwayTriphttps://github.com/koosaga/olympiad/blob/master/JOI/camp17_railway_trip_alternative.cpp......
  • js基础---js操作dom元素节点的方法
    replaceWith():使用括号内元素替换当前元素remove():删除当前元素解决点击a标签不跳转页面的方法......
  • Go语言及开发工具LiteIDE的安装
    安装平台macGo语言安装下载go的安装包下载页面:https://golang.org/dl/另外参考http://godoc.golangtc.com/doc/install#install下载完go语言的安装包之后进行安装mac上默认的安装路径是/usr/local/go设置环境变量exportGOROOT=$HOME/goexportPATH=$PATH:$GOROOT/binGo语言开发......
  • Eclipse won't launch because `reload maven project has encountered a proble m`
    关于eclipse因为maven无法启动的问题,参考以下两个网页http://www.91linux.com/html/2016/eclipse_1018/15540.htmlhttp://stackoverflow.com/questions/31080665/eclipse-wont-launch-because-reload-maven-project-has-encountered-a-proble-m不需要删除整个.metadata如果删除......
  • hbase1.1.7的安装
    安装步骤参考http://wuchong.me/blog/2015/04/05/hbase-cluster-deploy/hbase官方文档http://hbase.apache.org/book.html#configuration另外两篇也有参考价值关闭防火墙https://zhidao.baidu.com/question/303901938543294164.htmlserviceiptablesstopchkconfigiptables......